UNPKG

projen

Version:

CDK for software projects

92 lines 9.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relativeBumpType = relativeBumpType; exports.renderBumpType = renderBumpType; exports.parseBumpType = parseBumpType; exports.performBump = performBump; exports.isMajorMinorPatch = isMajorMinorPatch; /** * Symbolic representations of version bumps * * There are 3 types of bumps: no bump, a relative bump (increasing one component) or an absolute bump (a specific new version) */ const semver_1 = require("semver"); /** * Reverse engineer the bump type from two version * * We have to do this because `commit-and-tag-version` will not just tell * us the type of bump it performed, it only prints the new version. */ function relativeBumpType(v0, v1) { const s0 = (0, semver_1.parse)(v0); if (!s0) { throw new Error(`Not a parseable version: ${v0}`); } const s1 = (0, semver_1.parse)(v1); if (!s1) { throw new Error(`Not a parseable version: ${v1}`); } // Discards the build qualifier (`+12345`) if (s0.version === s1.version) { return { bump: "none" }; } if (s0.major !== s1.major) { return { bump: "relative", relative: "major" }; } if (s0.minor !== s1.minor) { return { bump: "relative", relative: "minor" }; } return { bump: "relative", relative: "patch" }; } /** * Bump type to string */ function renderBumpType(bumpType) { switch (bumpType.bump) { case "none": return "none"; case "relative": return bumpType.relative; case "absolute": return bumpType.absolute; } } /** * String to bump type */ function parseBumpType(x) { if (x === "none") { return { bump: "none" }; } if (isMajorMinorPatch(x)) { return { bump: "relative", relative: x }; } if (isFullVersionString(x)) { return { bump: "absolute", absolute: x }; } throw new Error(`Invalid version: ${x}`); } /** * Perform the given bump on the given version, returning the new version */ function performBump(baseVersion, bumpType) { switch (bumpType.bump) { case "none": return baseVersion; case "absolute": return bumpType.absolute; case "relative": const inced = (0, semver_1.inc)(baseVersion, bumpType.relative); if (!inced) { throw new Error(`Could not bump version: ${baseVersion}, type ${bumpType.relative}`); } return inced.toString(); } } function isMajorMinorPatch(v) { return !!v.match(/^(major|minor|patch)$/); } function isFullVersionString(nextVersion) { return nextVersion.match(/^\d+\.\d+\.\d+(-[^\s]+)?$/); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlbGVhc2UvYnVtcC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBc0JBLDRDQXNCQztBQUtELHdDQVNDO0FBS0Qsc0NBV0M7QUFLRCxrQ0FlQztBQUVELDhDQUVDO0FBbEdEOzs7O0dBSUc7QUFDSCxtQ0FBb0M7QUFXcEM7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxFQUFVLEVBQUUsRUFBVTtJQUNyRCxNQUFNLEVBQUUsR0FBRyxJQUFBLGNBQUssRUFBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFBLGNBQUssRUFBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxFQUFFLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNqRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsUUFBa0I7SUFDL0MsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzNCLEtBQUssVUFBVTtZQUNiLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLENBQVM7SUFDckMsSUFBSSxDQUFDLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDakIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixXQUFXLENBQUMsV0FBbUIsRUFBRSxRQUFrQjtJQUNqRSxRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixLQUFLLE1BQU07WUFDVCxPQUFPLFdBQVcsQ0FBQztRQUNyQixLQUFLLFVBQVU7WUFDYixPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDM0IsS0FBSyxVQUFVO1lBQ2IsTUFBTSxLQUFLLEdBQUcsSUFBQSxZQUFHLEVBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYiwyQkFBMkIsV0FBVyxVQUFVLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FDcEUsQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLENBQVM7SUFDekMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLFdBQW1CO0lBQzlDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN5bWJvbGljIHJlcHJlc2VudGF0aW9ucyBvZiB2ZXJzaW9uIGJ1bXBzXG4gKlxuICogVGhlcmUgYXJlIDMgdHlwZXMgb2YgYnVtcHM6IG5vIGJ1bXAsIGEgcmVsYXRpdmUgYnVtcCAoaW5jcmVhc2luZyBvbmUgY29tcG9uZW50KSBvciBhbiBhYnNvbHV0ZSBidW1wIChhIHNwZWNpZmljIG5ldyB2ZXJzaW9uKVxuICovXG5pbXBvcnQgeyBpbmMsIHBhcnNlIH0gZnJvbSBcInNlbXZlclwiO1xuXG5leHBvcnQgdHlwZSBCdW1wVHlwZSA9XG4gIFJlbGF0aXZlQnVtcFR5cGUgfCB7IGJ1bXA6IFwiYWJzb2x1dGVcIjsgYWJzb2x1dGU6IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZUJ1bXBUeXBlID1cbiAgeyBidW1wOiBcIm5vbmVcIiB9IHwgeyBidW1wOiBcInJlbGF0aXZlXCI7IHJlbGF0aXZlOiBNYWpvck1pbm9yUGF0Y2ggfTtcblxuLy8gVGhlIG9ubHkgcmVsYXRpdmUgdHlwZXMgdGhhdCBDQVRWIHN1cHBvcnRzXG5leHBvcnQgdHlwZSBNYWpvck1pbm9yUGF0Y2ggPSBcIm1ham9yXCIgfCBcIm1pbm9yXCIgfCBcInBhdGNoXCI7XG5cbi8qKlxuICogUmV2ZXJzZSBlbmdpbmVlciB0aGUgYnVtcCB0eXBlIGZyb20gdHdvIHZlcnNpb25cbiAqXG4gKiBXZSBoYXZlIHRvIGRvIHRoaXMgYmVjYXVzZSBgY29tbWl0LWFuZC10YWctdmVyc2lvbmAgd2lsbCBub3QganVzdCB0ZWxsXG4gKiB1cyB0aGUgdHlwZSBvZiBidW1wIGl0IHBlcmZvcm1lZCwgaXQgb25seSBwcmludHMgdGhlIG5ldyB2ZXJzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmVCdW1wVHlwZSh2MDogc3RyaW5nLCB2MTogc3RyaW5nKTogUmVsYXRpdmVCdW1wVHlwZSB7XG4gIGNvbnN0IHMwID0gcGFyc2UodjApO1xuICBpZiAoIXMwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSBwYXJzZWFibGUgdmVyc2lvbjogJHt2MH1gKTtcbiAgfVxuICBjb25zdCBzMSA9IHBhcnNlKHYxKTtcbiAgaWYgKCFzMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm90IGEgcGFyc2VhYmxlIHZlcnNpb246ICR7djF9YCk7XG4gIH1cblxuICAvLyBEaXNjYXJkcyB0aGUgYnVpbGQgcXVhbGlmaWVyIChgKzEyMzQ1YClcbiAgaWYgKHMwLnZlcnNpb24gPT09IHMxLnZlcnNpb24pIHtcbiAgICByZXR1cm4geyBidW1wOiBcIm5vbmVcIiB9O1xuICB9XG5cbiAgaWYgKHMwLm1ham9yICE9PSBzMS5tYWpvcikge1xuICAgIHJldHVybiB7IGJ1bXA6IFwicmVsYXRpdmVcIiwgcmVsYXRpdmU6IFwibWFqb3JcIiB9O1xuICB9XG4gIGlmIChzMC5taW5vciAhPT0gczEubWlub3IpIHtcbiAgICByZXR1cm4geyBidW1wOiBcInJlbGF0aXZlXCIsIHJlbGF0aXZlOiBcIm1pbm9yXCIgfTtcbiAgfVxuICByZXR1cm4geyBidW1wOiBcInJlbGF0aXZlXCIsIHJlbGF0aXZlOiBcInBhdGNoXCIgfTtcbn1cblxuLyoqXG4gKiBCdW1wIHR5cGUgdG8gc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCdW1wVHlwZShidW1wVHlwZTogQnVtcFR5cGUpIHtcbiAgc3dpdGNoIChidW1wVHlwZS5idW1wKSB7XG4gICAgY2FzZSBcIm5vbmVcIjpcbiAgICAgIHJldHVybiBcIm5vbmVcIjtcbiAgICBjYXNlIFwicmVsYXRpdmVcIjpcbiAgICAgIHJldHVybiBidW1wVHlwZS5yZWxhdGl2ZTtcbiAgICBjYXNlIFwiYWJzb2x1dGVcIjpcbiAgICAgIHJldHVybiBidW1wVHlwZS5hYnNvbHV0ZTtcbiAgfVxufVxuXG4vKipcbiAqIFN0cmluZyB0byBidW1wIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQnVtcFR5cGUoeDogc3RyaW5nKTogQnVtcFR5cGUge1xuICBpZiAoeCA9PT0gXCJub25lXCIpIHtcbiAgICByZXR1cm4geyBidW1wOiBcIm5vbmVcIiB9O1xuICB9XG4gIGlmIChpc01ham9yTWlub3JQYXRjaCh4KSkge1xuICAgIHJldHVybiB7IGJ1bXA6IFwicmVsYXRpdmVcIiwgcmVsYXRpdmU6IHggfTtcbiAgfVxuICBpZiAoaXNGdWxsVmVyc2lvblN0cmluZyh4KSkge1xuICAgIHJldHVybiB7IGJ1bXA6IFwiYWJzb2x1dGVcIiwgYWJzb2x1dGU6IHggfTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmVyc2lvbjogJHt4fWApO1xufVxuXG4vKipcbiAqIFBlcmZvcm0gdGhlIGdpdmVuIGJ1bXAgb24gdGhlIGdpdmVuIHZlcnNpb24sIHJldHVybmluZyB0aGUgbmV3IHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcmZvcm1CdW1wKGJhc2VWZXJzaW9uOiBzdHJpbmcsIGJ1bXBUeXBlOiBCdW1wVHlwZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAoYnVtcFR5cGUuYnVtcCkge1xuICAgIGNhc2UgXCJub25lXCI6XG4gICAgICByZXR1cm4gYmFzZVZlcnNpb247XG4gICAgY2FzZSBcImFic29sdXRlXCI6XG4gICAgICByZXR1cm4gYnVtcFR5cGUuYWJzb2x1dGU7XG4gICAgY2FzZSBcInJlbGF0aXZlXCI6XG4gICAgICBjb25zdCBpbmNlZCA9IGluYyhiYXNlVmVyc2lvbiwgYnVtcFR5cGUucmVsYXRpdmUpO1xuICAgICAgaWYgKCFpbmNlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENvdWxkIG5vdCBidW1wIHZlcnNpb246ICR7YmFzZVZlcnNpb259LCB0eXBlICR7YnVtcFR5cGUucmVsYXRpdmV9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmNlZC50b1N0cmluZygpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01ham9yTWlub3JQYXRjaCh2OiBzdHJpbmcpOiB2IGlzIE1ham9yTWlub3JQYXRjaCB7XG4gIHJldHVybiAhIXYubWF0Y2goL14obWFqb3J8bWlub3J8cGF0Y2gpJC8pO1xufVxuXG5mdW5jdGlvbiBpc0Z1bGxWZXJzaW9uU3RyaW5nKG5leHRWZXJzaW9uOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5leHRWZXJzaW9uLm1hdGNoKC9eXFxkK1xcLlxcZCtcXC5cXGQrKC1bXlxcc10rKT8kLyk7XG59XG4iXX0=