name: build-release

on:
  push:
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+"

permissions:
  contents: write

jobs:
  build-windows:
    name: build-windows
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
            toolchain:
              stable-x86_64-pc-windows-msvc
      - run: cargo b -r
      - run: mv target/release/pumpbin.exe PumpBin-x86_64-pc-windows-msvc.exe
      - run: mv target/release/maker.exe PumpBin-Maker-x86_64-pc-windows-msvc.exe
      - uses: softprops/action-gh-release@v2
        with:
          files: |
            PumpBin-x86_64-pc-windows-msvc.exe
            PumpBin-Maker-x86_64-pc-windows-msvc.exe

  build-macos:
    name: build-macos
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: x86_64-apple-darwin, aarch64-apple-darwin
      - run: bash scripts/build-macos.sh
      - run: mv target/release/macos-pumpbin/PumpBin.dmg PumpBin.dmg
      - run: mv target/release/macos-maker/PumpBin-Maker.dmg PumpBin-Maker.dmg
      - uses: softprops/action-gh-release@v2
        with:
          files: |
            PumpBin.dmg
            PumpBin-Maker.dmg

  build-linux:
    name: build-linux
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          targets: x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu
      - run: sudo apt-get install -y crossbuild-essential-arm64
      - run: cargo build --release --target=x86_64-unknown-linux-gnu
      - run: cargo build --release --target=aarch64-unknown-linux-gnu
      - run: mv target/x86_64-unknown-linux-gnu/release/pumpbin PumpBin-x86_64-unknown-linux-gnu
      - run: mv target/x86_64-unknown-linux-gnu/release/maker PumpBin-Maker-x86_64-unknown-linux-gnu
      - run: mv target/aarch64-unknown-linux-gnu/release/pumpbin PumpBin-aarch64-unknown-linux-gnu
      - run: mv target/aarch64-unknown-linux-gnu/release/maker PumpBin-Maker-aarch64-unknown-linux-gnu
      - uses: softprops/action-gh-release@v2
        with:
          files: |
            PumpBin-x86_64-unknown-linux-gnu
            PumpBin-Maker-x86_64-unknown-linux-gnu
            PumpBin-aarch64-unknown-linux-gnu
            PumpBin-Maker-aarch64-unknown-linux-gnu
