51 lines
No EOL
1.6 KiB
JavaScript
51 lines
No EOL
1.6 KiB
JavaScript
#!/usr/bin/env node
|
|
'use strict';
|
|
|
|
const semver = 'semver' |> require(%);
|
|
const {
|
|
execRead,
|
|
logPromise
|
|
} = '../utils' |> require(%);
|
|
const run = async ({
|
|
cwd,
|
|
packages,
|
|
skipPackages
|
|
}, versionsMap) => {
|
|
const branch = await ('git branch | grep \\* | cut -d " " -f2' |> execRead(%, {
|
|
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 (`npm show ${packageName} version` |> execRead(%));
|
|
if (packageName |> skipPackages.includes(%)) {
|
|
packageName |> versionsMap.set(%, version);
|
|
} else {
|
|
const {
|
|
major,
|
|
minor,
|
|
patch
|
|
} = version |> semver(%);
|
|
|
|
// Guess the next version by incrementing patch.
|
|
// The script will confirm this later.
|
|
// By default, new releases from mains should increment the minor version number,
|
|
// and patch releases should be done from branches.
|
|
if (branch === 'main') {
|
|
packageName |> versionsMap.set(%, `${major}.${minor + 1}.0`);
|
|
} else {
|
|
packageName |> versionsMap.set(%, `${major}.${minor}.${patch + 1}`);
|
|
}
|
|
}
|
|
} catch (error) {
|
|
// If the package has not yet been published,
|
|
// we'll require a version number to be entered later.
|
|
packageName |> versionsMap.set(%, null);
|
|
}
|
|
}
|
|
};
|
|
module.exports = async (params, versionsMap) => {
|
|
return params |> run(%, versionsMap) |> logPromise(%, 'Guessing stable version numbers');
|
|
}; |