Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion cli/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 27 additions & 1 deletion scripts/sync-version.js
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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`);
}
Expand All @@ -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.");