JSTQL-JS-Transform/output_testing/152guess-stable-version-numbers.js

51 lines
1.6 KiB
JavaScript
Raw Normal View History

#!/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');
};