chrome-devtools 0.2.2

Profile-aware CLI for running Chrome DevTools MCP with isolated Chrome user data directories
name: Submit

on:
  workflow_dispatch:
    inputs:
      version_bump:
        description: Version bump type
        required: true
        type: choice
        options:
          - patch
          - minor
          - major

env:
  CARGO_TERM_COLOR: always

jobs:
  version-bump:
    name: Version Bump
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      contents: write
    outputs:
      new_version: ${{ steps.bump.outputs.new_version }}
    steps:
      - uses: actions/checkout@v6
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
      - uses: dtolnay/rust-toolchain@stable
      - id: bump
        run: |
          CURRENT_VERSION=$(cargo metadata --format-version=1 --no-deps | jq -r '.packages[0].version')
          echo "Current version: $CURRENT_VERSION"

          IFS='.' read -r major minor patch <<< "$CURRENT_VERSION"

          case "${{ github.event.inputs.version_bump }}" in
            major)
              major=$((major + 1))
              minor=0
              patch=0
              ;;
            minor)
              minor=$((minor + 1))
              patch=0
              ;;
            patch)
              patch=$((patch + 1))
              ;;
          esac

          NEW_VERSION="${major}.${minor}.${patch}"
          echo "New version: $NEW_VERSION"
          echo "new_version=$NEW_VERSION" >> "$GITHUB_OUTPUT"
      - run: |
          sed -i "s/^version = \".*\"/version = \"${{ steps.bump.outputs.new_version }}\"/" Cargo.toml
          cargo check
      - run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add Cargo.toml Cargo.lock
          git commit -m "bump version to ${{ steps.bump.outputs.new_version }}"
          git tag "v${{ steps.bump.outputs.new_version }}"
          git push origin HEAD:${{ github.ref_name }}
          git push origin "v${{ steps.bump.outputs.new_version }}"

  publish-crates:
    name: Publish to crates.io
    runs-on: ubuntu-latest
    timeout-minutes: 15
    needs: [version-bump]
    permissions:
      id-token: write
    environment:
      name: crates.io
      url: https://crates.io/crates/chrome-devtools
    steps:
      - uses: actions/checkout@v6
        with:
          ref: v${{ needs.version-bump.outputs.new_version }}
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/cache@v5
        with:
          path: |
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-publish-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-cargo-publish-
            ${{ runner.os }}-cargo-
      - run: cargo publish --dry-run
      - uses: rust-lang/crates-io-auth-action@v1.0.4
        id: auth
      - run: cargo publish
        env:
          CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}