35 lines
981 B
JavaScript
35 lines
981 B
JavaScript
import enquirer from "enquirer";
|
|
import semver from "semver";
|
|
|
|
const SEMVER_INCREMENTS = ["patch", "minor", "major"];
|
|
const CUSTOM_VERSION_VALUE_PLACEHOLDER = "custom-version";
|
|
|
|
export default async function chooseVersion(params) {
|
|
let version = await new enquirer.Select({
|
|
name: "version",
|
|
message: `Choose a version to release (current: ${params.previousVersion})`,
|
|
choices: [
|
|
...SEMVER_INCREMENTS.map((type) => {
|
|
const version = semver.inc(params.previousVersion, type);
|
|
|
|
return {
|
|
message: `${type}: ${version}`,
|
|
value: version,
|
|
};
|
|
}),
|
|
{ role: "separator" },
|
|
{ message: "Other", value: CUSTOM_VERSION_VALUE_PLACEHOLDER },
|
|
],
|
|
}).run();
|
|
|
|
if (version === CUSTOM_VERSION_VALUE_PLACEHOLDER) {
|
|
({ version } = await enquirer.prompt({
|
|
type: "input",
|
|
name: "version",
|
|
message: `Input version (current: ${params.previousVersion})`,
|
|
}));
|
|
}
|
|
|
|
params.version = version;
|
|
}
|