From 71a79f64e814c74d505a1df3d24e41dc7ce940e9 Mon Sep 17 00:00:00 2001 From: Chris Tate Date: Tue, 27 Jan 2026 09:33:47 -0600 Subject: [PATCH] fix: sync Cargo.lock when version changes (#302) Update sync-version.js to also run `cargo update -p agent-browser` after updating Cargo.toml, keeping Cargo.lock in sync. Also update pre-commit hook to stage Cargo.lock along with Cargo.toml. This commit also brings Cargo.lock up to date (was stuck at 0.7.6). --- .husky/pre-commit | 2 +- cli/Cargo.lock | 2 +- scripts/sync-version.js | 28 +++++++++++++++++++++++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 1a08a31..1fe1f99 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,3 +1,3 @@ pnpm lint-staged node scripts/sync-version.js -git add cli/Cargo.toml +git add cli/Cargo.toml cli/Cargo.lock diff --git a/cli/Cargo.lock b/cli/Cargo.lock index 9ae81d5..5856945 100644 --- a/cli/Cargo.lock +++ b/cli/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "agent-browser" -version = "0.7.6" +version = "0.8.4" dependencies = [ "dirs", "libc", diff --git a/scripts/sync-version.js b/scripts/sync-version.js index 6251c29..9c0471a 100644 --- a/scripts/sync-version.js +++ b/scripts/sync-version.js @@ -5,12 +5,14 @@ * Run this script before building or releasing. */ +import { execSync } from "child_process"; import { readFileSync, writeFileSync } from "fs"; import { dirname, join } from "path"; import { fileURLToPath } from "url"; const __dirname = dirname(fileURLToPath(import.meta.url)); const rootDir = join(__dirname, ".."); +const cliDir = join(rootDir, "cli"); // Read version from package.json (single source of truth) const packageJson = JSON.parse( @@ -21,17 +23,19 @@ const version = packageJson.version; console.log(`Syncing version ${version} to all config files...`); // Update Cargo.toml -const cargoTomlPath = join(rootDir, "cli/Cargo.toml"); +const cargoTomlPath = join(cliDir, "Cargo.toml"); let cargoToml = readFileSync(cargoTomlPath, "utf-8"); const cargoVersionRegex = /^version\s*=\s*"[^"]*"/m; const newCargoVersion = `version = "${version}"`; +let cargoTomlUpdated = false; if (cargoVersionRegex.test(cargoToml)) { const oldMatch = cargoToml.match(cargoVersionRegex)?.[0]; if (oldMatch !== newCargoVersion) { cargoToml = cargoToml.replace(cargoVersionRegex, newCargoVersion); writeFileSync(cargoTomlPath, cargoToml); console.log(` Updated cli/Cargo.toml: ${oldMatch} -> ${newCargoVersion}`); + cargoTomlUpdated = true; } else { console.log(` cli/Cargo.toml already up to date`); } @@ -40,4 +44,26 @@ if (cargoVersionRegex.test(cargoToml)) { process.exit(1); } +// Update Cargo.lock to match Cargo.toml +if (cargoTomlUpdated) { + try { + execSync("cargo update -p agent-browser --offline", { + cwd: cliDir, + stdio: "pipe", + }); + console.log(` Updated cli/Cargo.lock`); + } catch { + // --offline may fail if package not in cache, try without it + try { + execSync("cargo update -p agent-browser", { + cwd: cliDir, + stdio: "pipe", + }); + console.log(` Updated cli/Cargo.lock`); + } catch (e) { + console.error(` Warning: Could not update Cargo.lock: ${e.message}`); + } + } +} + console.log("Version sync complete.");