-
Notifications
You must be signed in to change notification settings - Fork 53
Expand file tree
/
Copy pathversion.js
More file actions
63 lines (58 loc) · 1.62 KB
/
Copy pathversion.js
File metadata and controls
63 lines (58 loc) · 1.62 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
import simpleGit from "simple-git";
import semver from "semver";
import dateFormat from "dateformat";
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
var src = {
git: simpleGit(__dirname + "/../binaryen"),
filter: tag => {
var match = /^version_(\d+)$/.exec(tag); // see: https://github.com/WebAssembly/binaryen/issues/1156
return match ? {
tag: tag,
version: match[1] + ".0.0",
} : null;
}
};
var dst = {
git: simpleGit(__dirname + "/.."),
filter: tag => {
var match = /^v(\d+\.\d+\.\d+)(?:\-|$)/.exec(tag);
return match ? {
tag: tag,
version: match[1]
} : null;
}
};
function latest(repo) {
return new Promise((resolve, reject) => {
repo.git.tags({ "--sort": "-committerdate" }, (err, tags) => {
if (err) return reject(err);
for (var i = 0; i < tags.all.length; ++i) {
var result = repo.filter(tags.all[i]);
if (result !== null) {
repo.tag = result.tag;
repo.version = result.version;
return resolve();
};
}
return reject(Error("no matching tags: " + tags.all.join(", ")));
});
}).catch(err => {
console.error(err.stack);
process.exit(1);
});
}
if (process.argv[2] === "tag") {
latest(src).then(() => console.log(src.tag));
} else {
latest(src).then(() => {
latest(dst).then(() => {
if (semver.gt(src.version, dst.version))
console.log(src.version);
else
console.log(src.version + "-nightly." + dateFormat(Date.UTC(), "yyyymmdd"));
});
});
}