forked from zaach/jison
-
Notifications
You must be signed in to change notification settings - Fork 20
/
__patch_version_in_js.js
83 lines (68 loc) · 2.46 KB
/
__patch_version_in_js.js
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
// fetch the version from package.json and patch the specified files
const version = require('./package.json').version;
const globby = require('globby');
const fs = require('fs');
globby(['lib/jison*.js', 'lib/cli*.js']).then(paths => {
var count = 0;
//console.log(paths);
paths.forEach(path => {
var updated = false;
//console.log('path: ', path);
var src = fs.readFileSync(path, 'utf8');
src = src.replace(/^(\s*var version = )([^;]+;)/gm, function repl(s, m1, m2) {
if (m2 !== "'" + version + "';") {
updated = true;
}
return m1 + "'" + version + "';";
});
if (updated) {
count++;
console.log('updated: ', path);
fs.writeFileSync(path, src, {
encoding: 'utf8',
flags: 'w'
});
}
});
globby(['packages/**/package*.json']).then(paths => {
var count = 0;
//console.log(paths);
paths.forEach(path => {
var updated = false;
//console.log('path: ', path);
var src = fs.readFileSync(path, 'utf8');
// line looks like: "version": "0.6.1-200",
src = src.replace(/^(\s*"version":\s*")([^"\s]+)(",)/gm, function repl(s, m1, m2, m3) {
if (m2 !== version) {
updated = true;
}
return m1 + version + m3;
})
// lines looks like:
// "@gerhobbelt/lex-parser": "0.6.1-206"
.replace(/^(\s*"@gerhobbelt\/(?:lex-parser|ebnf-parser|jison-lex|jison2json|json2jison)":\s*")([^"\s]+)(",?)/gm, function repl(s, m1, m2, m3) {
if (m2 !== version) {
updated = true;
}
return m1 + version + m3;
})
// lines looks like:
// "jison-helpers-lib": "0.6.1-206"
.replace(/^(\s*"jison-helpers-lib":\s*")([^"\s]+)(",?)/gm, function repl(s, m1, m2, m3) {
if (m2 !== version) {
updated = true;
}
return m1 + version + m3;
});
if (updated) {
count++;
console.log('updated: ', path);
fs.writeFileSync(path, src, {
encoding: 'utf8',
flags: 'w'
});
}
});
console.log('\nUpdated', count, 'files\' version info to version', version);
});
});