name: Release on: workflow_dispatch: inputs: release: type: choice description: Release the asset default: 'none' options: - none - prerelease - release bump: type: choice description: Semver to bump default: 'none' options: - none - patch - minor - major permissions: contents: write jobs: create_tag: name: Tag a new version of the package runs-on: ubuntu-22.04 outputs: tag_name: ${{ steps.ready_tag.outputs.tag_name }} steps: - name: Checkout 🧰 uses: actions/checkout@v4 - name: Install semver-tool asdf uses: asdf-vm/actions/install@v3 with: tool_versions: | semver 3.4.0 - name: Get latest release uses: rez0n/actions-github-release@main id: latest_release with: token: ${{ secrets.GITHUB_TOKEN }} repository: "SteamDeckHomebrew/decky-loader" type: "nodraft" - name: Prepare tag ⚙️ id: ready_tag run: | export VERSION=${{ steps.latest_release.outputs.release }} echo "VERS: $VERSION" if [[ ${{github.event.inputs.release}} == "release" ]]; then OUT="notsemver" if [[ "$VERSION" =~ "-pre" ]]; then printf "is prerelease, bumping to release\n" OUT=$(semver bump release "$VERSION") printf "OUT: ${OUT}\n"\ printf "bumping by selected type.\n" if [[ "${{github.event.inputs.bump}}" != "none" ]]; then OUT=$(semver bump ${{github.event.inputs.bump}} "$OUT") printf "OUT: ${OUT}\n" else printf "no type selected, not bumping for release.\n" fi elif [[ ! "$VERSION" =~ "-pre" ]]; then printf "previous tag is a release, bumping by selected type.\n" if [[ "${{github.event.inputs.bump}}" != "none" ]]; then OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION") printf "OUT: ${OUT}\n" else printf "previous tag is a release, but no bump selected. Defaulting to a patch bump.\n" OUT=$(semver bump patch "$VERSION") printf "OUT: ${OUT}\n" fi fi else OUT="" if [[ ! "$VERSION" =~ "-pre" ]]; then printf "pre-release from release, bumping by selected type and prerel\n" if [[ ! ${{ github.event.inputs.bump }} == "none" ]]; then OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION") printf "OUT: ${OUT}\n" else printf "type not selected, defaulting to patch\n" OUT=$(semver bump patch "$VERSION") printf "OUT: ${OUT}\n" fi OUT="$OUT-pre" OUT=$(semver bump prerel "$OUT") printf "OUT: ${OUT}\n" elif [[ "$VERSION" =~ "-pre" ]]; then printf "pre-release to pre-release, bumping by selected type and or prerel version\n" if [[ ! ${{ github.event.inputs.bump }} == "none" ]]; then OUT=$(semver bump ${{github.event.inputs.bump}} "$VERSION") printf "OUT: ${OUT}\n" OUT="$OUT-pre" printf "OUT: ${OUT}\n" printf "bumping prerel\n" OUT=$(semver bump prerel "$OUT") printf "OUT: ${OUT}\n" else printf "type not selected, defaulting to new pre-release only\n" printf "bumping prerel\n" OUT=$(semver bump prerel "$VERSION") printf "OUT: ${OUT}\n" fi fi fi echo "vOUT: v${OUT}" echo tag_name=v$OUT >> $GITHUB_OUTPUT - name: Push tag 📤 uses: rickstaa/action-create-tag@v1.3.2 if: ${{ steps.ready_tag.outputs.tag_name && !env.ACT }} with: tag: ${{ steps.ready_tag.outputs.tag_name }} message: Pre-release ${{ steps.ready_tag.outputs.tag_name }} build: name: Build tagged artifact uses: ./.github/workflows/build.yml needs: [create_tag] release: name: Release tagged artifact runs-on: ubuntu-22.04 needs: [create_tag, build] steps: - name: Fetch package artifact ⬇️ uses: actions/download-artifact@v4 with: name: PluginLoader - name: Pre-release 📦 if: github.event.inputs.release == 'prerelease' uses: softprops/action-gh-release@v1 with: name: Prerelease ${{ needs.create_tag.outputs.tag_name }} tag_name: ${{ needs.create_tag.outputs.tag_name }} files: ./PluginLoader prerelease: true generate_release_notes: true - name: Release 📦 if: github.event.inputs.release == 'release' uses: softprops/action-gh-release@v1 with: name: Release ${{ needs.create_tag.outputs.tag_name }} tag_name: ${{ needs.create_tag.outputs.tag_name }} files: ./PluginLoader prerelease: false generate_release_notes: true