keepawake 0.6.0

Keep your computer awake
Documentation
name: Release

on:
  workflow_dispatch: {}
  push:
    tags:
      - v[0-9]*

jobs:
  release:
    name: Release
    strategy:
      matrix:
        include:
        - os: windows-2022
          target: x86_64-pc-windows-msvc
        - os: windows-2022
          target: aarch64-pc-windows-msvc
        - os: ubuntu-22.04
          target: x86_64-unknown-linux-musl
        - os: ubuntu-22.04-arm
          target: aarch64-unknown-linux-musl
        - os: macos-13
          target: x86_64-apple-darwin
        - os: macos-13
          target: aarch64-apple-darwin

    runs-on: ${{ matrix.os }}

    steps:
      - uses: actions/checkout@v5

      - name: Setup Rust Toolchain
        uses: actions-rust-lang/setup-rust-toolchain@v1
        with:
          target: ${{ matrix.target }}

      - name: Install musl-tools
        if: matrix.target == 'x86_64-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl'
        run: sudo apt-get update && sudo apt-get install musl-tools

      - name: Build
        run: cargo build --verbose --locked -F bin --release --target ${{ matrix.target }}

      - name: Package
        id: package
        shell: bash
        run: |

          shopt -s extglob
          staging="keepawake-${{ github.head_ref || github.ref_name }}-${{ matrix.target }}"
          mkdir $staging

          cp target/${{ matrix.target }}/release/keepawake@(|.exe) $staging/
          cp README.md CHANGELOG.md LICENSE $staging/

          tar zcf $staging.tar.gz $staging
          echo "ASSET=$staging.tar.gz" >> $GITHUB_OUTPUT

      - uses: actions/upload-artifact@v4
        with:
          name: release-${{ matrix.target }}
          path: ${{ steps.package.outputs.ASSET }}

      - name: Release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          draft: true
          files: ${{ steps.package.outputs.ASSET }}

  merge:
    runs-on: ubuntu-22.04
    needs: release
    steps:
      - name: Merge Artifacts
        uses: actions/upload-artifact/merge@v4
        with:
          name: release
          pattern: release-*