diff --git a/.changes/cli-binstall.md b/.changes/cli-binstall.md new file mode 100644 index 000000000..9305fdb38 --- /dev/null +++ b/.changes/cli-binstall.md @@ -0,0 +1,5 @@ +--- +"cli.rs": patch +--- + +Add support to cargo-binstall. diff --git a/.github/workflows/covector-version-or-publish.yml b/.github/workflows/covector-version-or-publish.yml index 1e5417abe..28e8bb7b8 100644 --- a/.github/workflows/covector-version-or-publish.yml +++ b/.github/workflows/covector-version-or-publish.yml @@ -171,3 +171,13 @@ jobs: token: ${{ secrets.TAURI_BOT_PAT }} repository: tauri-apps/tauri event-type: publish-clijs + + - name: Trigger cli.rs publishing workflow + if: | + steps.covector.outputs.successfulPublish == 'true' && + contains(steps.covector.outputs.packagesPublished, 'cli.rs') + uses: peter-evans/repository-dispatch@v1 + with: + token: ${{ secrets.TAURI_BOT_PAT }} + repository: tauri-apps/tauri + event-type: publish-clirs diff --git a/.github/workflows/publish-cli.yml b/.github/workflows/publish-cli-js.yml similarity index 100% rename from .github/workflows/publish-cli.yml rename to .github/workflows/publish-cli-js.yml diff --git a/.github/workflows/publish-cli-rs.yml b/.github/workflows/publish-cli-rs.yml new file mode 100644 index 000000000..d4f17f883 --- /dev/null +++ b/.github/workflows/publish-cli-rs.yml @@ -0,0 +1,82 @@ +name: publish cli.rs +env: + MACOSX_DEPLOYMENT_TARGET: '10.13' +on: + workflow_dispatch: + repository_dispatch: + types: [publish-clirs] + +jobs: + build: + runs-on: ${{ matrix.target.platform }} + + strategy: + fail-fast: false + matrix: + target: + - { + name: 'x86_64-unknown-linux-gnu', + platform: 'ubuntu-18.04', + ext: '' + } + - { name: 'x86_64-apple-darwin', platform: 'macos-latest', ext: '' } + - { + name: 'x86_64-pc-windows-msvc', + platform: 'windows-latest', + ext: '.exe' + } + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: install stable + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + + - name: install Linux dependencies + if: matrix.target.platform == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y libgtk-3-dev + + - name: build CLI + uses: actions-rs/cargo@v1 + with: + command: build + args: --manifest-path ./tooling/cli/Cargo.toml --release + + - name: Upload CLI + uses: actions/upload-artifact@v3 + with: + name: cargo-tauri-${{ matrix.target.name }}${{ matrix.target.ext }} + path: tooling/cli/target/release/cargo-tauri${{ matrix.target.ext }} + if-no-files-found: error + + upload: + needs: build + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Download built CLIs + uses: actions/download-artifact@v3 + with: + path: outputs + + - name: Pack archives + run: ./.scripts/ci/pack-cli.sh + + - name: Get CLI version + run: echo "CLI_VERSION=$(cat tooling/cli/metadata.json | jq '."cli.js".version' -r)" >> $GITHUB_ENV + + - name: Publish release + uses: softprops/action-gh-release@50195ba7f6f93d1ac97ba8332a178e008ad176aa + with: + tag_name: cli.rs-v${{ env.CLI_VERSION }} + files: | + outputs/cargo-tauri-*.zip + outputs/cargo-tauri-*.tgz diff --git a/.scripts/ci/pack-cli.sh b/.scripts/ci/pack-cli.sh new file mode 100755 index 000000000..4b54bf02a --- /dev/null +++ b/.scripts/ci/pack-cli.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -euxo pipefail + +for o in outputs/*; do + pushd "$o" + + chmod +x cargo-tauri* + cp ../../tooling/cli/LICENSE* ../../tooling/cli/README.md . + + target=$(basename "$o" | cut -d. -f1) + if grep -qE '(apple|windows)' <<< "$target"; then + zip "../${target}.zip" * + else + tar cv * | gzip -9 > "../${target}.tgz" + fi + + popd +done diff --git a/tooling/cli/Cargo.toml b/tooling/cli/Cargo.toml index ac9b478e9..e2580b117 100644 --- a/tooling/cli/Cargo.toml +++ b/tooling/cli/Cargo.toml @@ -85,3 +85,14 @@ url = { version = "2.2", features = [ "serde" ] } [profile.release] lto = true + +[package.metadata.binstall] +pkg-url = "{ repo }/releases/download/cli.rs-v{ version }/{ bin }-{ target }.{ archive-format }" +bin-dir = "{ bin }{ binary-ext }" +pkg-fmt = "tgz" + +[package.metadata.binstall.overrides.x86_64-pc-windows-msvc] +pkg-fmt = "zip" + +[package.metadata.binstall.overrides.x86_64-apple-darwin] +pkg-fmt = "zip"