-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsync-versions.mjs
More file actions
74 lines (61 loc) · 2.89 KB
/
Copy pathsync-versions.mjs
File metadata and controls
74 lines (61 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/usr/bin/env node
/**
* Keep MCP server and VS Code extension on the same release version.
* Source of truth: package.json "version" at repo root.
*
* Usage: node sync-versions.mjs [version]
* node sync-versions.mjs # sync files to package.json version
* node sync-versions.mjs 1.4.0 # bump all targets to 1.4.0
*/
import { readFileSync, writeFileSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';
const root = dirname(fileURLToPath(import.meta.url));
const pkgPath = join(root, 'package.json');
const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
const version = process.argv[2]?.trim() || pkg.version;
if (!/^\d+\.\d+\.\d+$/.test(version)) {
console.error(`Invalid semver: ${version}`);
process.exit(1);
}
function read(path) {
return readFileSync(join(root, path), 'utf8');
}
function write(path, content) {
writeFileSync(join(root, path), content, 'utf8');
console.log(` updated ${path}`);
}
// Root package.json
const rootPkg = JSON.parse(read('package.json'));
rootPkg.version = version;
write('package.json', `${JSON.stringify(rootPkg, null, 2)}\n`);
// Root package-lock (root package entries only)
let lock = read('package-lock.json');
lock = lock.replace(/("name": "code-engine-mcp-server",\n\s+"version": )"[^"]+"/, `$1"${version}"`);
lock = lock.replace(/(\n\s+"": \{\n\s+"name": "code-engine-mcp-server",\n\s+"version": )"[^"]+"/, `$1"${version}"`);
write('package-lock.json', lock);
// MCP Registry manifest
let serverJson = read('server.json');
serverJson = serverJson.replace(/"version": "[^"]+"/g, `"version": "${version}"`);
write('server.json', serverJson);
// Server runtime metadata
let indexTs = read('src/index.ts');
indexTs = indexTs.replace(/version: '[^']+'/, `version: '${version}'`);
write('src/index.ts', indexTs);
// VS Code extension
let extPkg = JSON.parse(read('vscode-extension/package.json'));
extPkg.version = version;
write('vscode-extension/package.json', `${JSON.stringify(extPkg, null, 2)}\n`);
let extLock = read('vscode-extension/package-lock.json');
extLock = extLock.replace(/("name": "code-engine-mcp",\n\s+"version": )"[^"]+"/, `$1"${version}"`);
extLock = extLock.replace(/(\n\s+"": \{\n\s+"name": "code-engine-mcp",\n\s+"version": )"[^"]+"/, `$1"${version}"`);
write('vscode-extension/package-lock.json', extLock);
// Bundled server inside extension
let bundledPkg = JSON.parse(read('vscode-extension/server/package.json'));
bundledPkg.version = version;
write('vscode-extension/server/package.json', `${JSON.stringify(bundledPkg, null, 2)}\n`);
let bundledServerJson = read('vscode-extension/server/server.json');
bundledServerJson = bundledServerJson.replace(/"version": "[^"]+"/g, `"version": "${version}"`);
write('vscode-extension/server/server.json', bundledServerJson);
console.log(`\nAll release targets set to ${version}`);
console.log('Next: npm run build && cd vscode-extension && npm run package');