2025-01-11 10:20:49 +08:00
|
|
|
import styleText from "node-style-text";
|
2021-07-26 09:24:44 +08:00
|
|
|
import semver from "semver";
|
2018-06-05 16:37:52 -03:00
|
|
|
|
2023-12-17 22:51:37 +09:00
|
|
|
export default function validateNewVersion({ version, previousVersion, next }) {
|
2022-10-14 17:17:47 +08:00
|
|
|
if (!version) {
|
|
|
|
|
throw new Error("'--version' is required");
|
|
|
|
|
}
|
|
|
|
|
|
2018-06-05 16:37:52 -03:00
|
|
|
if (!semver.valid(version)) {
|
2022-10-14 17:17:47 +08:00
|
|
|
throw new Error(
|
2025-01-11 10:20:49 +08:00
|
|
|
`Invalid version '${styleText.red.underline(version)}' specified`,
|
2022-10-14 17:17:47 +08:00
|
|
|
);
|
2018-06-05 16:37:52 -03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!semver.gt(version, previousVersion)) {
|
2019-11-17 18:36:21 +08:00
|
|
|
throw new Error(
|
2025-01-11 10:20:49 +08:00
|
|
|
`Version '${styleText.yellow.underline(version)}' has already been published`,
|
2019-11-17 18:36:21 +08:00
|
|
|
);
|
2018-06-05 16:37:52 -03:00
|
|
|
}
|
2023-12-17 22:51:37 +09:00
|
|
|
|
|
|
|
|
if (next && semver.prerelease(version) === null) {
|
|
|
|
|
throw new Error(
|
2025-01-11 10:20:49 +08:00
|
|
|
`Version '${styleText.yellow.underline(
|
2023-12-17 22:51:37 +09:00
|
|
|
version,
|
|
|
|
|
)}' is not a prerelease version`,
|
|
|
|
|
);
|
|
|
|
|
}
|
2021-07-26 09:24:44 +08:00
|
|
|
}
|