diff --git a/package.json b/package.json index 1607854..b73f298 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "typecheck": "tsc --noEmit", "lint": "biome check main.ts src/", "lint:fix": "biome check --write main.ts src/", + "version": "node scripts/bump-version.mjs", "test": "npm run build && npm run typecheck && node scripts/run-tests.mjs", "test:only": "node scripts/run-tests.mjs" }, diff --git a/scripts/bump-version.mjs b/scripts/bump-version.mjs new file mode 100644 index 0000000..0093eb2 --- /dev/null +++ b/scripts/bump-version.mjs @@ -0,0 +1,34 @@ +#!/usr/bin/env node +/** + * Bump plugin version in manifest.json and versions.json atomically. + * Usage: node scripts/bump-version.mjs + * Example: node scripts/bump-version.mjs 1.0.8 + */ +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]; + +if (!version || !/^\d+\.\d+\.\d+$/.test(version)) { + console.error('Usage: node scripts/bump-version.mjs '); + 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')); + +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'); + +console.log(`Bumped version: ${oldVersion} → ${version}`); +console.log(`Updated: manifest.json, versions.json`);