name: release on: push: paths: - 'module/module.prop' jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 with: fetch-depth: 2 - name: Get the version from module.prop id: get_version run: | VERSION=$(grep '^version=' module/module.prop | sed 's/version=//') echo "VERSION=$VERSION" >> $GITHUB_ENV - name: Check if version is already tagged id: check_version run: | LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "none") echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV if [ "$LATEST_TAG" == "none" ]; then echo "skip=false" >> $GITHUB_ENV elif [ "$LATEST_TAG" == "$VERSION" ]; then echo "skip=true" >> $GITHUB_ENV else echo "skip=false" >> $GITHUB_ENV fi - name: Configure Git user if: env.skip == 'false' run: | git config --global user.email "github-actions[bot]@users.noreply.github.com" git config --global user.name "github-actions[bot]" - name: Create a new tag (if version changed) if: env.skip == 'false' run: | git tag -a "$VERSION" -m "Release version $VERSION" git push origin "$VERSION" - name: Set release variables if: env.skip == 'false' id: setup run: | CURRENT_TAG="$VERSION" RELEASE_NOTES=$(awk -v tag="### $CURRENT_TAG" ' $0 == tag {flag=1; next} /^###/ && flag {exit} flag {print} ' changelog.md) FORMATTED_RELEASE_NOTES=$(printf "### Tricky Addon module\n%s\n---\n### Tricky Addon Lite - script only\n- Check on [changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only#tricky-addon-lite-update-target-list-script)" "$RELEASE_NOTES") echo "$FORMATTED_RELEASE_NOTES" > release_notes.txt echo "RELEASE_NOTES<> $GITHUB_ENV cat release_notes.txt >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV echo "CURRENT_TAG=$CURRENT_TAG" >> $GITHUB_ENV echo "ZIP_NAME=TrickyAddonModule-${VERSION}.zip" >> $GITHUB_ENV echo "ZIP_PATH=module" >> $GITHUB_ENV echo "LITE_SCRIPT_ONLY_ZIP_NAME=TrickyAddonLite_ScriptOnly_Extract-${VERSION}.zip" >> $GITHUB_ENV echo "LITE_SCRIPT_ONLY_PATH=lite-script_only" >> $GITHUB_ENV - name: Compress the module folder if: env.skip == 'false' run: | cd "${{ env.ZIP_PATH }}" && zip -r "../${{ env.ZIP_NAME }}" ./* echo "Created zip file: ${{ env.ZIP_NAME }}" - name: Compress the lite-script_only folder if: env.skip == 'false' run: | cd "${{ env.LITE_SCRIPT_ONLY_PATH }}" && zip -r "../${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}" ./* echo "Created zip file: ${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }}" - name: Create release if: env.skip == 'false' uses: softprops/action-gh-release@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: ${{ env.ZIP_NAME }},${{ env.LITE_SCRIPT_ONLY_ZIP_NAME }} tag_name: ${{ env.CURRENT_TAG }} name: ${{ env.CURRENT_TAG }} body: ${{ env.RELEASE_NOTES }} draft: false prerelease: false