virtuoso-cli 0.3.7

CLI tool to control Cadence Virtuoso from anywhere, locally or remotely
Documentation
name: Release

on:
  push:
    tags:
      - 'v*'

env:
  CARGO_TERM_COLOR: always

permissions:
  contents: write

jobs:
  build-linux:
    name: Build Linux x86_64
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      - name: Build release binaries
        run: |
          cargo build --release
          cargo build --release --features daemon --bin virtuoso-daemon

      - name: Package binaries
        run: |
          TAG="${GITHUB_REF_NAME}"
          mkdir -p dist
          cp target/release/vcli              dist/vcli-${TAG}-linux-x86_64
          cp target/release/vtui              dist/vtui-${TAG}-linux-x86_64
          cp target/release/virtuoso-daemon   dist/virtuoso-daemon-${TAG}-linux-x86_64
          chmod +x dist/*

      - name: Create GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          files: dist/*
          generate_release_notes: true
          body: |
            See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details.

  publish-crate:
    name: Publish to crates.io
    runs-on: ubuntu-latest
    needs: build-linux
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2

      - name: Publish
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: |
          if [ -z "$CARGO_REGISTRY_TOKEN" ]; then
            echo "CARGO_REGISTRY_TOKEN not set — skipping crates.io publish"
            exit 0
          fi
          cargo publish