2026-04-27 11:51:11 +00:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
/**
|
|
|
|
|
* Bump plugin version in manifest.json and versions.json atomically.
|
|
|
|
|
* Usage: node scripts/bump-version.mjs <version>
|
|
|
|
|
* Example: node scripts/bump-version.mjs 1.0.8
|
|
|
|
|
*/
|
2026-04-27 12:19:53 +00:00
|
|
|
import { execFileSync } from 'node:child_process';
|
2026-04-27 11:51:11 +00:00
|
|
|
import fs from 'node:fs';
|
|
|
|
|
import path from 'node:path';
|
|
|
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
|
|
|
|
|
|
const root = path.dirname(path.dirname(fileURLToPath(import.meta.url)));
|
|
|
|
|
const version = process.argv[2];
|
2026-04-27 12:19:53 +00:00
|
|
|
const force = process.argv.includes('--force');
|
2026-04-27 11:51:11 +00:00
|
|
|
|
|
|
|
|
if (!version || !/^\d+\.\d+\.\d+$/.test(version)) {
|
2026-04-27 12:19:53 +00:00
|
|
|
console.error('Usage: node scripts/bump-version.mjs <version> [--force]');
|
2026-04-27 11:51:11 +00:00
|
|
|
console.error('Example: node scripts/bump-version.mjs 1.0.8');
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const manifestPath = path.join(root, 'manifest.json');
|
|
|
|
|
const versionsPath = path.join(root, 'versions.json');
|
|
|
|
|
|
|
|
|
|
const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
|
|
|
|
|
const versions = JSON.parse(fs.readFileSync(versionsPath, 'utf8'));
|
|
|
|
|
|
2026-04-27 12:19:53 +00:00
|
|
|
if (versions[version] !== undefined && !force) {
|
|
|
|
|
console.error(`Version ${version} already exists in versions.json. Use --force to override.`);
|
|
|
|
|
process.exit(1);
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-27 11:51:11 +00:00
|
|
|
const oldVersion = manifest.version;
|
|
|
|
|
manifest.version = version;
|
|
|
|
|
versions[version] = manifest.minAppVersion;
|
|
|
|
|
|
|
|
|
|
fs.writeFileSync(manifestPath, JSON.stringify(manifest, null, '\t') + '\n');
|
|
|
|
|
fs.writeFileSync(versionsPath, JSON.stringify(versions, null, '\t') + '\n');
|
|
|
|
|
|
2026-04-27 12:19:53 +00:00
|
|
|
// Stage files so npm version hook includes them in the auto-commit.
|
|
|
|
|
try {
|
|
|
|
|
execFileSync('git', ['add', manifestPath, versionsPath], { cwd: root });
|
|
|
|
|
} catch (_) {
|
|
|
|
|
// Not in a git repo or git not available — skip staging.
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-27 11:51:11 +00:00
|
|
|
console.log(`Bumped version: ${oldVersion} → ${version}`);
|
|
|
|
|
console.log(`Updated: manifest.json, versions.json`);
|