# Copyright 2019-2024 Tauri Programme within The Commons Conservancy
# SPDX-License-Identifier: Apache-2.0
# SPDX-License-Identifier: MIT

name: publish `tauri-cli`
env:
  MACOSX_DEPLOYMENT_TARGET: '10.13'
on:
  workflow_dispatch:
  repository_dispatch:
    types: [publish-clirs]

jobs:
  build:
    runs-on: ${{ matrix.config.os }}

    strategy:
      fail-fast: false
      matrix:
        config:
          - os: ubuntu-22.04
            rust_target: x86_64-unknown-linux-gnu
            ext: ''
            args: ''
          - os: macos-latest
            rust_target: x86_64-apple-darwin
            ext: ''
            args: ''
          - os: macos-latest
            rust_target: aarch64-apple-darwin
            ext: ''
            args: ''
          - os: windows-latest
            rust_target: x86_64-pc-windows-msvc
            ext: '.exe'
            args: ''
          - os: windows-latest
            rust_target: aarch64-pc-windows-msvc
            ext: '.exe'
            args: ''

    steps:
      - uses: actions/checkout@v4

      - name: 'Setup Rust'
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.config.rust_target }}

      - uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.config.rust_target }}

      - name: install Linux dependencies
        if: matrix.config.os == 'ubuntu-latest'
        run: |
          sudo apt-get update
          sudo apt-get install -y libgtk-3-dev

      - name: Build CLI
        run: cargo build --manifest-path ./crates/tauri-cli/Cargo.toml --profile release-size-optimized ${{ matrix.config.args }}

      - name: Upload CLI
        uses: actions/upload-artifact@v4
        with:
          name: cargo-tauri-${{ matrix.config.rust_target }}${{ matrix.config.ext }}
          path: target/release-size-optimized/cargo-tauri${{ matrix.config.ext }}
          if-no-files-found: error

  upload:
    needs: build
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Download built CLIs
        uses: actions/download-artifact@v4.1.7
        with:
          path: outputs

      - name: Pack archives
        run: ./.scripts/ci/pack-cli.sh

      - name: Get CLI version
        run: echo "CLI_VERSION=$(cat crates/tauri-cli/metadata-v2.json | jq '."cli.js".version' -r)" >> $GITHUB_ENV

      - name: Publish release
        uses: softprops/action-gh-release@50195ba7f6f93d1ac97ba8332a178e008ad176aa
        with:
          tag_name: tauri-cli-v${{ env.CLI_VERSION }}
          files: |
            outputs/cargo-tauri-*.zip
            outputs/cargo-tauri-*.tgz
