three_body_lang 0.6.5

Three Body Language written in Rust
name: Binary

on:
  push:
    tags:
      - "*.*.*"

jobs:
  publish:
    name: ${{ matrix.target }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu
            use-cross: false
            strip: strip

          - os: windows-latest
            target: x86_64-pc-windows-msvc
            use-cross: false
            binary_ext: ".exe"

          - os: macos-latest
            target: x86_64-apple-darwin
            use-cross: false
            strip: strip

          - os: macos-latest
            target: aarch64-apple-darwin
            use-cross: false
            strip: strip

    steps:
      - uses: actions/checkout@v3

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true
          target: ${{ matrix.target }}

      - name: Install required dependencies
        shell: bash
        run: |
          if [[ ${{ matrix.target }} == x86_64-unknown-linux-musl ]]; then
              sudo apt-get update
              sudo apt-get install -y musl-tools
          fi
          if [[ ${{ matrix.target }} == aarch64-unknown-linux-gnu ]]; then
              sudo apt-get update
              sudo apt-get install -y binutils-aarch64-linux-gnu
          fi
          if [[ ${{ matrix.target }} == arm-unknown-linux-gnueabihf ]]; then
              sudo apt-get update
              sudo apt-get install -y binutils-arm-linux-gnueabihf
          fi

      - name: Build
        shell: bash
        run: cargo build --target ${{ matrix.target }} --release --locked

      - name: Strip binary
        if: matrix.strip
        run: ${{ matrix.strip }} target/${{ matrix.target }}/release/3body${{ matrix.binary_ext }}

      - name: Upload binaries to release
        uses: svenstaro/upload-release-action@v2
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          file: target/${{ matrix.target }}/release/3body${{ matrix.binary_ext }}
          asset_name: 3body-${{ matrix.target }}${{ matrix.binary_ext }}
          tag: ${{ github.ref }}