-
Notifications
You must be signed in to change notification settings - Fork 249
Expand file tree
/
Copy pathupdate-version.mjs
More file actions
100 lines (84 loc) · 3.89 KB
/
update-version.mjs
File metadata and controls
100 lines (84 loc) · 3.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import fs from 'node:fs';
import url from 'node:url';
import path from 'node:path';
const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
const rootPkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf-8'));
const currentNpmVersion = rootPkg.version.match(/([0-9]+\.[0-9]+\.[0-9]+)/)[0];
function updateNpmVersion(packageJsonFilePath) {
let version = currentNpmVersion;
if (process.argv.length === 4) {
// node update-version.js alpha 37
// -> "version": "1.0.0-alpha37",
version = `${version}-${process.argv[2]}.${process.argv[3]}`;
}
console.log(`NPM Path: ${packageJsonFilePath}`);
console.log(`Updating version to ${version}`);
let packageJson = fs.readFileSync(packageJsonFilePath, 'utf-8');
packageJson = packageJson
.replace(/"version": "[^"]+"/, `"version": "${version}"`)
.replaceAll(/("@coderline\/alphatab[^"]*"): "\^[^"]+"/g, `$1: "^${version}"`);
fs.writeFileSync(packageJsonFilePath, packageJson);
}
function updateCSharpVersion(propsPath) {
let version = currentNpmVersion;
let assemblyVersion = version;
if (process.argv.length === 4) {
// node update-version.js alpha 37
// -> <Version>1.0.0-alpha37</Version>
// -> <AssemblyVersion>1.0.0.37</AssemblyVersion>
// -> <FileVersion>1.0.0.37</FileVersion>
version = `${version}-${process.argv[2]}.${process.argv[3]}`;
assemblyVersion = `${assemblyVersion}.${process.argv[3]}`;
} else if (process.argv.length === 3) {
// node update-version.js 37
// -> <Version>1.0.0</Version>
// -> <AssemblyVersion>1.0.0.37</AssemblyVersion>
// -> <FileVersion>1.0.0.37</FileVersion>
assemblyVersion = `${assemblyVersion}.${process.argv[2]}`;
} else {
// node update-version.js
// -> <Version>1.0.0</Version>
// -> <AssemblyVersion>1.0.0.0</AssemblyVersion>
// -> <FileVersion>1.0.0.0</FileVersion>
assemblyVersion = `${assemblyVersion}.0`;
}
console.log(`Props Path: ${propsPath}`);
console.log(` Updating Version to ${version}`);
console.log(` Updating AssemblyVersion to ${assemblyVersion}`);
let propsSource = fs.readFileSync(propsPath, 'utf-8');
propsSource = propsSource.replace(/<Version>[^<]+<\//g, `<Version>${version}</`);
propsSource = propsSource.replace(/<AssemblyVersion>[^<]+<\//g, `<AssemblyVersion>${assemblyVersion}</`);
fs.writeFileSync(propsPath, propsSource);
}
function updateKotlinVersion(buildFile) {
let version = currentNpmVersion;
if (process.argv.length === 4) {
// node update-version.js alpha 37
// -> version = "1.3.1-SNAPSHOT"
version = `${version}-SNAPSHOT`;
} else if (process.argv.length === 3) {
// node update-version.js 37
// -> version = "1.3.1"
} else {
// node update-version.js
// -> version = "1.3.1-SNAPSHOT"
version = `${version}-SNAPSHOT`;
}
console.log(`Kotlin Path: ${buildFile}`);
console.log(` Updating Version to ${version}`);
let propsSource = fs.readFileSync(buildFile, 'utf-8');
propsSource = propsSource.replace(/libVersion\s*= \".*/g, `libVersion = "${version}"`);
fs.writeFileSync(buildFile, propsSource);
}
updateNpmVersion(path.resolve(__dirname, '../package.json'));
for (const entry of fs.readdirSync(path.resolve(__dirname, '../packages/'), { withFileTypes: true })) {
if (entry.isDirectory()) {
const packageJsonFilePath = path.resolve(__dirname, `../packages/${entry.name}/package.json`);
if (fs.existsSync(packageJsonFilePath)) {
updateNpmVersion(packageJsonFilePath);
}
}
}
updateCSharpVersion(path.resolve(__dirname, '../packages/csharp/src/Directory.Build.props'));
updateKotlinVersion(path.resolve(__dirname, '../packages/kotlin/src/android/build.gradle.kts'));
console.log('Done updating versions.');