name: snarkOS Release
on:
  push:
    tags:
      - 'v*.*.*'

env:
  RUST_BACKTRACE: 1

jobs:
  ubuntu:
    name: Ubuntu
    runs-on: ubuntu-18.04
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt

      - name: Build snarkOS
        run: |
          cargo build --all --release && strip target/release/snarkos

      - id: get_version
        uses: battila7/get-version-action@v2

      - name: Zip
        run: |
          mkdir tempdir
          mv target/release/snarkos tempdir
          cd tempdir
          zip -r aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-unknown-linux-gnu.zip snarkos
          cd ..
          mv tempdir/aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-unknown-linux-gnu.zip .

      - name: Release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: |
            aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-unknown-linux-gnu.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  macos:
    name: macOS
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt

      - name: Build snarkOS
        run: |
          cargo build --all --release && strip target/release/snarkos

      - id: get_version
        uses: battila7/get-version-action@v2

      - name: Zip
        run: |
          mkdir tempdir
          mv target/release/snarkos tempdir
          cd tempdir
          zip -r aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-apple-darwin.zip snarkos
          cd ..
          mv tempdir/aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-apple-darwin.zip .

      - name: Release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: |
            aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-apple-darwin.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  windows:
    name: Windows
    runs-on: windows-latest
    continue-on-error: true
    steps:
      - name: Checkout
        uses: actions/checkout@v1

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt

      - name: Install LLVM and Clang
        uses: KyleMayes/install-llvm-action@v1
        with:
          version: "11"
          directory: ${{ runner.temp }}/llvm

      - name: Set LIBCLANG_PATH
        run: echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV

      - name: Build snarkOS
        run: |
          cargo build --all --release

      - id: get_version
        uses: battila7/get-version-action@v2

      - name: Zip
        run: |
          Compress-Archive target/release/snarkos.exe aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-pc-windows-msvc.zip

      - name: Release
        uses: softprops/action-gh-release@v1
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: |
            aleo-testnet1-${{ steps.get_version.outputs.version }}-x86_64-pc-windows-msvc.zip
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
