git-together-ssh 0.2.1

Enable seamless git usage when paired programming on a shared machine
Documentation
on:
  push:
    # branches:
    #   - ci
    tags:
      - 'v*'

name: Release

jobs:
  test:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ ubuntu-latest, macos-latest, windows-latest ]
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: test

  release:
    name: Create Release
    needs: test
    runs-on: ubuntu-latest
    outputs:
      upload_url: ${{ steps.create_release.outputs.upload_url }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: ${{ github.ref }}

  build:
    name: Build Binaries
    needs: release
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ ubuntu-latest, macos-latest, windows-latest ]
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release

      - name: Set Asset Names
        id: vars
        run: |
          triple=$(rustup show active-toolchain | awk '{print $1}')
          echo "::set-output name=windows_asset::git-together-${GITHUB_REF#refs/*/}-${triple}.zip"
          echo "::set-output name=non_windows_asset::git-together-${GITHUB_REF#refs/*/}-${triple}.tar.gz"
        shell: bash

      - name: Create Windows Asset
        if: matrix.os == 'windows-latest'
        run: |
          $SRC_DIR = $pwd.Path
          $STAGE = [System.Guid]::NewGuid().ToString()

          Set-Location $env:TEMP
          New-Item -Type Directory -Name $STAGE
          Set-Location $STAGE

          $ZIP = "$SRC_DIR\${{ steps.vars.outputs.windows_asset }}"

          Copy-Item "$SRC_DIR\target\release\git-together.exe" '.\'

          7z a "$ZIP" *

          Remove-Item *.* -Force
          Set-Location ..
          Remove-Item $STAGE
          Set-Location $SRC_DIR

      - name: Create Non-Windows Asset
        if: matrix.os != 'windows-latest'
        run: |
          tar -zvc git-together > ${{ github.workspace }}/${{ steps.vars.outputs.non_windows_asset }}
        working-directory: target/release

      - name: Upload Windows Release Asset
        if: matrix.os == 'windows-latest'
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release.outputs.upload_url }}
          asset_path: ./${{ steps.vars.outputs.windows_asset }}
          asset_name: ${{ steps.vars.outputs.windows_asset }}
          asset_content_type: application/zip

      - name: Upload Non-Windows Release Asset
        if: matrix.os != 'windows-latest'
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.release.outputs.upload_url }}
          asset_path: ./${{ steps.vars.outputs.non_windows_asset }}
          asset_name: ${{ steps.vars.outputs.non_windows_asset }}
          asset_content_type: application/gzip