anybar_rs 1.1.0

A Rust application for controlling Anybar 0.2.3
on: [push, pull_request]

defaults:
  run:
    shell: bash

env:
  cratename: anybar_rs

name: Test and Build

jobs:
  test:
    if: github.event_name == 'push' && !contains(github.ref, 'refs/tags/')
    name: Test on ${{ matrix.os }} (${{ matrix.target }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
        - build: macos
          os: macos-latest
          rust: stable
          target: x86_64-apple-darwin
          use-cross: false
          deptarget: 10.9
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: ${{ matrix.target }}
      - uses: actions-rs/cargo@v1
        env:
          MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deptarget }}
        with:
          use-cross: ${{ matrix.use-cross }}
          command: test
          args: --target=${{ matrix.target }}

  build:
    if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
    name: Build and release on ${{ matrix.os }} (${{ matrix.target }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
        - build: macos
          os: macos-latest
          rust: stable
          target: x86_64-apple-darwin
          use-cross: false
          deptarget: 10.9
        - build: macos
          os: macos-latest
          rust: stable
          target: aarch64-apple-darwin
          use-cross: false
          deptarget: 11.0
    steps:
      - name: Switch to macOS 12.x SDK
        if: matrix.target == 'aarch64-apple-darwin'
        run: |
          xcodebuild -showsdks
          SDKROOT=$(xcrun -sdk macosx12.0 --show-sdk-path)
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: ${{ matrix.target }}
      - uses: actions-rs/cargo@v1
        env:
          MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deptarget }}
        with:
          use-cross: ${{ matrix.use-cross }}
          command: build
          args: --release --target=${{ matrix.target }}
      - name: Gather Assets
        run: |
          src=$(pwd)
          stage=
          case $RUNNER_OS in
              Linux)
                  stage=$(mktemp -d)
                  ;;
              macOS)
                  stage=$(mktemp -d -t tmp)
                  ;;
              Windows)
                  stage=$(mktemp -d)
                  ;;
          esac
          mkdir zipped
          RELEASE_VERSION=${GITHUB_REF#refs/tags/}
          ASSET_NAME="${{ env.cratename }}-$RELEASE_VERSION-${{ matrix.target }}"
          echo "Release name is $ASSET_NAME"
          echo "STAGE=$stage" >> $GITHUB_ENV
          echo "ASSET_NAME=$ASSET_NAME" >> $GITHUB_ENV
          if [ "$RUNNER_OS" == "macOS" ]; then
            echo "TYPE=tar" >> $GITHUB_ENV
            echo "EXTENSION=tar.gz" >> $GITHUB_ENV
            cp target/${{ matrix.target }}/release/anybar_rs $stage/
          fi
          ls $stage
          cd $src

      - name: Archive
        if: runner.os != 'Windows'
        run: |
          pushd ${{ env.STAGE }}
          tar -czf "${{ env.ASSET_NAME }}.${{ env.EXTENSION }}" *
          popd
          cp "${{ env.STAGE }}/${{ env.ASSET_NAME }}.${{ env.EXTENSION }}" zipped/

      - name: Release
        uses: softprops/action-gh-release@v1
        with:
          files: |
            zipped/${{ env.ASSET_NAME }}.${{ env.EXTENSION }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}