-
Notifications
You must be signed in to change notification settings - Fork 45.6k
/
guess-stable-version-numbers.js
49 lines (41 loc) · 1.5 KB
/
guess-stable-version-numbers.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
#!/usr/bin/env node
'use strict';
const semver = require('semver');
const {execRead, logPromise} = require('../utils');
const run = async ({cwd, packages, skipPackages}, versionsMap) => {
const branch = await execRead('git branch | grep \\* | cut -d " " -f2', {
cwd,
});
for (let i = 0; i < packages.length; i++) {
const packageName = packages[i];
try {
// In case local package JSONs are outdated,
// guess the next version based on the latest NPM release.
const version = await execRead(`npm show ${packageName} version`);
if (skipPackages.includes(packageName)) {
versionsMap.set(packageName, version);
} else {
const {major, minor, patch} = semver(version);
// Guess the next version by incrementing patch.
// The script will confirm this later.
// By default, new releases from masters should increment the minor version number,
// and patch releases should be done from branches.
if (branch === 'master') {
versionsMap.set(packageName, `${major}.${minor + 1}.0`);
} else {
versionsMap.set(packageName, `${major}.${minor}.${patch + 1}`);
}
}
} catch (error) {
// If the package has not yet been published,
// we'll require a version number to be entered later.
versionsMap.set(packageName, null);
}
}
};
module.exports = async (params, versionsMap) => {
return logPromise(
run(params, versionsMap),
'Guessing stable version numbers'
);
};