cses-cli 0.1.4

CSES CLI is a lightweight tool for using CSES from the command line.
name: CD

on:
  push:
    tags:
      - "v*"

jobs:
  draft_release:
    name: Draft release
    runs-on: ubuntu-latest
    steps:
      - name: Create draft release
        id: create_release
        uses: softprops/action-gh-release@v2
        with:
          name: Release ${{ github.ref_name }}
          draft: true
          body: |
            See the user manual [here](https://github.com/csesfi/cses-cli/wiki/User-manual).
    outputs:
      upload_url: ${{ steps.create_release.outputs.upload_url }}
      release_id: ${{ steps.create_release.outputs.id }}
  compile:
    name: Compile binary
    needs: draft_release
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: macos-latest
            target_triplet: aarch64-apple-darwin
            compiled_name: cses-cli
            export_name: cses-cli-mac
          - os: macos-latest
            target_triplet: x86_64-apple-darwin
            compiled_name: cses-cli
            export_name: cses-cli-intel-mac
          - os: ubuntu-22.04
            target_triplet: x86_64-unknown-linux-gnu
            compiled_name: cses-cli
            export_name: cses-cli-linux
          - os: windows-latest
            target_triplet: x86_64-pc-windows-msvc
            compiled_name: cses-cli.exe
            export_name: cses-cli-windows.exe
    steps:
      - uses: actions/checkout@v2
      - name: Cache Cargo registry
        uses: actions/cache@v5
        with:
          path: |
            ~/.cargo/bin
            ~/.cargo/git
            ~/.cargo/registry
            ~/.cargo/.crates.toml
            ~/.cargo/.package-cache
            ~/.cargo/.crates2.json
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}-cd
      - name: Add target toolchain
        run: rustup target add ${{ matrix.target_triplet }}
      - name: Compile binary
        run: cargo build --release --target ${{ matrix.target_triplet }}
        env:
          RUSTFLAGS: "--cfg custom_abort"
      - name: Upload release assets
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ needs.draft_release.outputs.upload_url }}
          asset_name: ${{ matrix.export_name }}
          asset_path: target/${{ matrix.target_triplet }}/release/${{ matrix.compiled_name }}
          asset_content_type: application/octet-stream
  publish-release:
    name: Publish release
    runs-on: ubuntu-latest
    needs:
      - draft_release
      - compile
    steps:
      - uses: eregon/publish-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          release_id: ${{ needs.draft_release.outputs.release_id }}