-
Notifications
You must be signed in to change notification settings - Fork 2
/
prepareRelease.js
executable file
·66 lines (57 loc) · 1.59 KB
/
prepareRelease.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
#!/usr/bin/env node
'use strict';
var fs = require ('fs');
var PACKAGE_DIR = fs.realpathSync (arguments[4]);
var PACKAGE_FILE = PACKAGE_DIR + '/' + 'package.json';
var THIS_FILE = fs.realpathSync (arguments[3]);
function currentVersion () {
try {
var packageJSON = JSON.parse (fs.readFileSync (PACKAGE_FILE));
return packageJSON.version;
}
catch (err) {
return 'ERROR';
}
}
var RE = new RegExp ('bastard/\\d*\.\\d*\.\\d*', 'g');
var VERSION = currentVersion ();
function performReplacement (file, callback) {
var data = fs.readFileSync (file, 'utf8');
var modifiedData = data.replace (RE, 'bastard/' + VERSION);
if (data != modifiedData) {
fs.writeFile (file, modifiedData, 'utf8', function (err) {
if (err) console.error ("Problem updating " + file + ": " + err);
else console.info ("Updated file: " + file);
callback ();
});
} else {
callback ();
}
}
function replaceInFiles (callback) {
var dir = PACKAGE_DIR;
fs.readdir (dir, function (err, list) {
if (err) return callback (err);
var remaining = list.length;
list.forEach (function (file) {
file = dir + '/' + file;
if (!(file.lastIndexOf ('.js') == file.length - 3) || file == THIS_FILE) {
if (--remaining <= 0) callback ();
return;
}
fs.stat (file, function (err, stat) {
if (stat && stat.isFile ()) {
performReplacement (file, function () {
if (--remaining <= 0) callback ();
});
} else {
if (--remaining <= 0) callback ();
}
});
});
});
}
replaceInFiles (function (err) {
if (err) console.error (err);
else console.info ("Version updated to " + VERSION);
});