'on':
  push:
    branches:
      - '*'
  pull_request: null
jobs:
  check:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/cache@v1
        with:
          path: ~/.cargo/registry
          key: '${{ runner.os }}-cargo-registry-${{ hashFiles(''**/Cargo.lock'') }}'
      - uses: actions/cache@v1
        with:
          path: ~/.cargo/git
          key: '${{ runner.os }}-cargo-index-${{ hashFiles(''**/Cargo.lock'') }}'
      - uses: actions/cache@v1
        with:
          path: target
          key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: check
  build:
    needs:
      - check
    runs-on: '${{ matrix.os }}'
    strategy:
      matrix:
        include:
          - os: windows-latest
            target: x86_64-unknown-linux-gnu
            suffix: ''
    steps:
      - uses: actions/checkout@master
        with:
          lfs: true
      - id: get_repository_name
        run: echo ::set-output name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//")
        shell: bash
      - uses: actions/download-artifact@master
        with:
          name: version
      - id: get_version
        run: 'echo ::set-output "name=VERSION::$(cat ./version/version)"'
        shell: bash
      - uses: actions/cache@v1
        with:
          path: ~/.cargo/registry
          key: '${{ runner.os }}-cargo-registry-${{ hashFiles(''**/Cargo.lock'') }}'
      - uses: actions/cache@v1
        with:
          path: ~/.cargo/git
          key: '${{ runner.os }}-cargo-index-${{ hashFiles(''**/Cargo.lock'') }}'
      - uses: actions/cache@v1
        with:
          path: target
          key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: install
          args: 'toml-cli'
      - shell: bash
        env:
          VERSION: '${{ steps.get_version.outputs.VERSION }}'
        run: |
          TEMP_FILE="$(mktemp)"
          toml set Cargo.toml package.version "${VERSION:1}" > "$TEMP_FILE"
          mv "$TEMP_FILE" Cargo.toml
      - uses: actions-rs/cargo@v1
        env:
          VERSION: '${{ steps.get_version.outputs.VERSION }}'
          REPOSITORY_NAME: '${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}'
        with:
          command: build
          args: '--release'
      - uses: actions/upload-artifact@master
        with:
          name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-${{ matrix.target }}
          path: ./target/release/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}${{ matrix.suffix }}
  release:
    if: github.ref == 'refs/heads/master'
    needs:
      - build
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@master
        with:
          lfs: true
      - id: get_repository_name
        run: echo ::set-output name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//")
        shell: bash
      - uses: actions/download-artifact@master
        with:
          name: version
      - id: get_version
        run: 'echo ::set-output name=VERSION::$(cat ./version/version)'
        shell: bash
      - uses: actions/download-artifact@master
        with:
          name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-unknown-linux-gnu
      - uses: actions/download-artifact@master
        with:
          name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-apple-darwin
      - uses: actions/download-artifact@master
        with:
          name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-pc-windows-msvc
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
      - uses: actions-rs/cargo@v1
        with:
          command: install
          args: 'toml-cli'
      - run: |
          TEMP_FILE="$(mktemp)"
          toml set Cargo.toml package.version "${VERSION:1}" > "$TEMP_FILE"
          mv "$TEMP_FILE" Cargo.toml
        shell: bash
        env:
          VERSION: '${{ steps.get_version.outputs.VERSION }}'
      - uses: stefanzweifel/git-auto-commit-action@v4.1.3
        with:
          commit_message: Bump cargo version
          branch: ${{ github.head_ref }}
          file_pattern: Cargo.toml
      - id: create_release
        uses: actions/create-release@v1.0.0
        env:
          GITHUB_TOKEN: '${{ secrets.COMMITTER_TOKEN }}'
        with:
          tag_name: '${{ steps.get_version.outputs.VERSION }}'
          release_name: 'Release ${{ steps.get_version.outputs.VERSION }}'
          draft: false
          prerelease: false
      - uses: actions/upload-release-asset@v1.0.1
        env:
          GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
        with:
          upload_url: '${{ steps.create_release.outputs.upload_url }}'
          asset_path: ./${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-unknown-linux-gnu/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}
          asset_name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-unknown-linux-gnu
          asset_content_type: application/octet-stream
      - uses: actions/upload-release-asset@v1.0.1
        env:
          GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
        with:
          upload_url: '${{ steps.create_release.outputs.upload_url }}'
          asset_path: ./${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-apple-darwin/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}
          asset_name: ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-apple-darwin
          asset_content_type: application/octet-stream
      - uses: actions/upload-release-asset@v1.0.1
        env:
          GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
        with:
          upload_url: '${{ steps.create_release.outputs.upload_url }}'
          asset_path: ./${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-pc-windows-msvc/${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}.exe
          asset_name:  ${{ steps.get_repository_name.outputs.REPOSITORY_NAME }}-x86_64-pc-windows-msvc.exe
          asset_content_type: application/octet-stream
