shu 0.5.0

High-dimensional metabolic maps.
# adapted from the template https://github.com/bevyengine/bevy_github_ci_template
name: Release

on:
  push:
    tags:
      - '*'

env:
  # update with the name of the main binary
  binary: shu
  add_binaries_to_github_release: true


jobs:

  # Build for wasm
  release-wasm:
    runs-on: ubuntu-latest

    steps:
      - uses: little-core-labs/get-git-tag@v3.0.1
        id: get_version
      - uses: actions/checkout@v2
      - uses: dtolnay/rust-toolchain@nightly
        with:
          targets: wasm32-unknown-unknown
      - name: install wasm-bindgen-cli
        run: |
          cargo install wasm-bindgen-cli --version 0.2.84

      - name: Build
        run: |
          cargo build --locked --release --target wasm32-unknown-unknown

      - name: Prepare package
        run: |
          wasm-bindgen --no-typescript --out-name bevy_game --out-dir wasm --target web target/wasm32-unknown-unknown/release/${{ env.binary }}.wasm
          cp -r assets wasm/

      - name: Package as a zip
        working-directory: ./wasm
        run: |
          zip --recurse-paths ../${{ env.binary }}.zip .

      - name: Upload binaries to artifacts
        uses: actions/upload-artifact@v3
        with:
          path: ${{ env.binary }}.zip
          name: wasm

      - name: Upload binaries to release
        if: ${{ env.add_binaries_to_github_release == 'true' }}
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ env.binary }}.zip
          asset_name: ${{ env.binary }}-wasm-${{ steps.get_version.outputs.tag }}.zip
          tag: ${{ github.ref }}
          overwrite: true

  # Build for Linux
  release-linux:
    runs-on: ubuntu-latest

    steps:
      - uses: little-core-labs/get-git-tag@v3.0.1
        id: get_version
      - uses: actions/checkout@v2
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: x86_64-unknown-linux-gnu
      - name: install dependencies
        run: |
          sudo apt-get update; sudo apt-get install pkg-config libx11-dev libasound2-dev libudev-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev

      - name: Build
        run: |
          cargo build --release --target x86_64-unknown-linux-gnu

      - name: Prepare package
        run: |
          mkdir linux
          cp target/x86_64-unknown-linux-gnu/release/${{ env.binary }} linux/
          cp -r assets linux/

      - name: Package as a zip
        working-directory: ./linux
        run: |
          zip --recurse-paths ../${{ env.binary }}.zip .

      - name: Upload binaries to artifacts
        uses: actions/upload-artifact@v3
        with:
          path: ${{ env.binary }}.zip
          name: linux

      - name: Upload binaries to release
        if: ${{ env.add_binaries_to_github_release == 'true' }}
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ env.binary }}.zip
          asset_name: ${{ env.binary }}-linux-${{ steps.get_version.outputs.tag }}.zip
          tag: ${{ github.ref }}
          overwrite: true

  # Build for Windows
  release-windows:
    runs-on: windows-latest

    steps:
      - uses: little-core-labs/get-git-tag@v3.0.1
        id: get_version
      - uses: actions/checkout@v2
      - uses: dtolnay/rust-toolchain@nightly
        with:
          targets: x86_64-pc-windows-msvc

      - name: Build
        run: |
          cargo build --release --target x86_64-pc-windows-msvc

      - name: Prepare package
        run: |
          mkdir windows
          cp target/x86_64-pc-windows-msvc/release/${{ env.binary }}.exe windows/
          cp -r assets windows/

      - name: Package as a zip
        run: |
          Compress-Archive -Path windows/* -DestinationPath ${{ env.binary }}.zip

      - name: Upload binaries to artifacts
        uses: actions/upload-artifact@v3
        with:
          path: ${{ env.binary }}.zip
          name: windows

      - name: Upload binaries to release
        if: ${{ env.add_binaries_to_github_release == 'true' }}
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ env.binary }}.zip
          asset_name: ${{ env.binary }}-windows-${{ steps.get_version.outputs.tag }}.zip
          tag: ${{ github.ref }}
          overwrite: true

  # Build for macOS
  release-macos:
    runs-on: macos-latest

    steps:
      - uses: little-core-labs/get-git-tag@v3.0.1
        id: get_version
      - uses: actions/checkout@v2
      - uses: dtolnay/rust-toolchain@nightly
        with:
          targets: x86_64-apple-darwin
      - name: Environment Setup
        run: |
          export CFLAGS="-fno-stack-check"
          export MACOSX_DEPLOYMENT_TARGET="10.9"
      - name: Install zld
        run: brew install michaeleisel/zld/zld
      - name: Build
        run: |
          cargo build --release --target x86_64-apple-darwin

      - name: Prepare Package
        run: |
          mkdir -p ${{ env.binary }}.app/Contents/MacOS
          cp target/x86_64-apple-darwin/release/${{ env.binary }} ${{ env.binary }}.app/Contents/MacOS/
          cp -r assets ${{ env.binary }}.app/Contents/MacOS/
          hdiutil create -fs HFS+ -volname "${{ env.binary }}" -srcfolder ${{ env.binary }}.app ${{ env.binary }}.dmg

      - name: Upload binaries to artifacts
        uses: actions/upload-artifact@v3
        with:
          path: ${{ env.binary }}.dmg
          name: mac

      - name: Upload binaries to release
        if: ${{ env.add_binaries_to_github_release == 'true' }}
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: ${{ env.binary }}.dmg
          asset_name: ${{ env.binary }}-macos-${{ steps.get_version.outputs.tag }}.dmg
          tag: ${{ github.ref }}
          overwrite: true