Files
skills/scripts/sync-plugin-version.mjs
Remote Box AgentandClaude Sonnet 5 321658273c Remove all em-dashes from the repo
Every em-dash across docs, skill files, scripts, and JSON/YAML metadata
was rewritten by hand (commas, colons, periods, parentheses, conjunctions)
rather than mechanically substituted, so sentences still read naturally.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 10:03:37 +00:00

42 lines
1.4 KiB
JavaScript

#!/usr/bin/env node
// Copies package.json's version into .claude-plugin/plugin.json.
// Runs as part of `npm run version`, immediately after `changeset version`.
// With --check it changes nothing and exits 1 if the two versions differ.
import { readFileSync, writeFileSync } from "node:fs";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
const repo = join(dirname(fileURLToPath(import.meta.url)), "..");
const pluginPath = join(repo, ".claude-plugin", "plugin.json");
const { version } = JSON.parse(readFileSync(join(repo, "package.json"), "utf8"));
const source = readFileSync(pluginPath, "utf8");
const plugin = JSON.parse(source);
if (plugin.version === version) {
console.log(`plugin.json version is ${version} (already in sync)`);
process.exit(0);
}
if (process.argv.includes("--check")) {
console.error(
`plugin.json version is ${plugin.version}, package.json is ${version}. Run \`node scripts/sync-plugin-version.mjs\`.`,
);
process.exit(1);
}
// Rewrite only the version line, to keep the key order and the formatting.
const updated = source.replace(
/("version"\s*:\s*")[^"]*(")/,
`$1${version}$2`,
);
if (JSON.parse(updated).version !== version) {
console.error(`Could not find a version field to replace in ${pluginPath}.`);
process.exit(1);
}
writeFileSync(pluginPath, updated);
console.log(`plugin.json version ${plugin.version} -> ${version}`);