diff --git a/action.yml b/action.yml index 938aad2..80b9e28 100644 --- a/action.yml +++ b/action.yml @@ -77,6 +77,8 @@ outputs: description: 'Output of is_package_json_version_upgraded, string' is_upgraded_version: description: 'Output of is_package_json_version_upgraded, true|false' + is_release_beta: + description: 'Output of is_package_json_version_upgraded, true|false' runs: using: 'node12' main: 'dist/index.js' \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index a40dd5a..6ba635c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -3449,16 +3449,17 @@ var NpmModuleVersion; if (!match) { throw new Error(`${versionStr} is not a valid NPM version`); } - return { - "major": parseInt(match[1]), - "minor": parseInt(match[2]), - "patch": parseInt(match[3]) - }; + return Object.assign({ "major": parseInt(match[1]), "minor": parseInt(match[2]), "patch": parseInt(match[3]) }, (() => { + const str = match[4]; + return str === undefined ? + {} : + { "betaPreRelease": parseInt(str) }; + })()); } NpmModuleVersion.parse = parse; ; function stringify(v) { - return `${v.major}.${v.minor}.${v.patch}`; + return `${v.major}.${v.minor}.${v.patch}${v.betaPreRelease === undefined ? "" : `-beta.${v.betaPreRelease}`}`; } NpmModuleVersion.stringify = stringify; /** @@ -3469,18 +3470,14 @@ var NpmModuleVersion; * */ function compare(v1, v2) { - const sign = (n) => n === 0 ? 0 : (n < 0 ? -1 : 1); - if (v1.major === v2.major) { - if (v1.minor === v2.minor) { - return sign(v1.patch - v2.patch); - } - else { - return sign(v1.minor - v2.minor); + const sign = (diff) => diff === 0 ? 0 : (diff < 0 ? -1 : 1); + const noUndefined = (n) => n !== null && n !== void 0 ? n : -1; + for (const level of ["major", "minor", "patch", "betaPreRelease"]) { + if (noUndefined(v1[level]) !== noUndefined(v2[level])) { + return sign(noUndefined(v1[level]) - noUndefined(v2[level])); } } - else { - return sign(v1.major - v2.major); - } + return 0; } NpmModuleVersion.compare = compare; function bumpType(params) { @@ -3489,18 +3486,12 @@ var NpmModuleVersion; if (compare(versionBehind, versionAhead) === 1) { throw new Error(`Version regression ${versionBehind} -> ${versionAhead}`); } - if (versionBehind.major !== versionAhead.major) { - return "MAJOR"; - } - else if (versionBehind.minor !== versionAhead.minor) { - return "MINOR"; - } - else if (versionBehind.patch !== versionAhead.patch) { - return "PATCH"; - } - else { - return "SAME"; + for (const level of ["major", "minor", "patch", "betaPreRelease"]) { + if (versionBehind[level] !== versionAhead[level]) { + return level; + } } + return "same"; } NpmModuleVersion.bumpType = bumpType; })(NpmModuleVersion = exports.NpmModuleVersion || (exports.NpmModuleVersion = {})); @@ -5564,6 +5555,20 @@ function getCommitAheadFactory(params) { exports.getCommitAheadFactory = getCommitAheadFactory; +/***/ }), + +/***/ 440: +/***/ (function(__unusedmodule, exports) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.id = void 0; +/** https://docs.tsafe.dev/id */ +var id = function (x) { return x; }; +exports.id = id; +//# sourceMappingURL=id.js.map + /***/ }), /***/ 448: @@ -7886,20 +7891,23 @@ function getLatestSemVersionedTagFactory(params) { function getLatestSemVersionedTag(params) { var e_1, _a; return __awaiter(this, void 0, void 0, function* () { - const { owner, repo } = params; + const { owner, repo, doIgnoreBeta } = params; const semVersionedTags = []; const { listTags } = listTags_1.listTagsFactory({ octokit }); try { for (var _b = __asyncValues(listTags({ owner, repo })), _c; _c = yield _b.next(), !_c.done;) { const tag = _c.value; - const match = tag.match(/^v?([0-9]+\.[0-9]+\.[0-9]+)$/); - if (!match) { + let version; + try { + version = NpmModuleVersion_1.NpmModuleVersion.parse(tag.replace(/^[vV]?/, "")); + } + catch (_d) { continue; } - semVersionedTags.push({ - tag, - "version": NpmModuleVersion_1.NpmModuleVersion.parse(match[1]) - }); + if (doIgnoreBeta && version.betaPreRelease !== undefined) { + continue; + } + semVersionedTags.push({ tag, version }); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } @@ -8610,6 +8618,94 @@ module.exports = require("http"); /***/ }), +/***/ 606: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.assert = exports.AssertionError = void 0; +/* eslint-disable @typescript-eslint/no-unused-vars */ +var overwriteReadonlyProp_1 = __webpack_require__(983); +var assertIsRefWrapper_1 = __webpack_require__(723); +/** @see */ +var AssertionError = /** @class */ (function (_super) { + __extends(AssertionError, _super); + function AssertionError(msg) { + var _newTarget = this.constructor; + var _this = _super.call(this, "Wrong assertion encountered" + (!msg ? "" : ": \"" + msg + "\"")) || this; + Object.setPrototypeOf(_this, _newTarget.prototype); + if (!_this.stack) { + return _this; + } + try { + (0, overwriteReadonlyProp_1.overwriteReadonlyProp)(_this, "stack", _this.stack + .split("\n") + .filter(function () { + var _a = []; + for (var _i = 0; _i < arguments.length; _i++) { + _a[_i] = arguments[_i]; + } + var _b = __read(_a, 2), i = _b[1]; + return i !== 1 && i !== 2; + }) + .join("\n")); + // eslint-disable-next-line no-empty + } + catch (_a) { } + return _this; + } + return AssertionError; +}(Error)); +exports.AssertionError = AssertionError; +/** https://docs.tsafe.dev/assert */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function assert(condition, msg) { + if (condition === void 0) { condition = true; } + if (assertIsRefWrapper_1.assertIsRefWrapper.ref !== undefined) { + assertIsRefWrapper_1.assertIsRefWrapper.ref = undefined; + return; + } + if (!condition) { + throw new AssertionError(msg); + } +} +exports.assert = assert; +//# sourceMappingURL=assert.js.map + +/***/ }), + /***/ 614: /***/ (function(module) { @@ -9053,6 +9149,7 @@ const NpmModuleVersion_1 = __webpack_require__(395); const gitCommit_1 = __webpack_require__(503); const getLatestSemVersionedTag_1 = __webpack_require__(472); const createOctokit_1 = __webpack_require__(906); +const assert_1 = __webpack_require__(606); exports.getActionParams = inputHelper_1.getActionParamsFactory({ "inputNameSubset": [ "owner", @@ -9072,7 +9169,7 @@ function action(_actionName, params, core) { const octokit = createOctokit_1.createOctokit({ github_token }); const { getCommitAhead } = getCommitAhead_1.getCommitAheadFactory({ octokit }); const { getLatestSemVersionedTag } = getLatestSemVersionedTag_1.getLatestSemVersionedTagFactory({ octokit }); - const { tag: branchBehind } = (_a = (yield getLatestSemVersionedTag({ owner, repo }))) !== null && _a !== void 0 ? _a : {}; + const { tag: branchBehind } = (_a = (yield getLatestSemVersionedTag({ owner, repo, "doIgnoreBeta": true }))) !== null && _a !== void 0 ? _a : {}; if (branchBehind === undefined) { core.warning(`It's the first release, not editing the CHANGELOG.md`); return; @@ -9094,11 +9191,16 @@ function action(_actionName, params, core) { branch, "compare_to_version": "0.0.0" }, core).then(({ version }) => version))); + if (NpmModuleVersion_1.NpmModuleVersion.parse(branchAheadVersion).betaPreRelease !== undefined) { + core.warning(`Version on ${branch} is ${branchAheadVersion} it's a beta release, we do not update the CHANGELOG.md`); + return; + } const bumpType = NpmModuleVersion_1.NpmModuleVersion.bumpType({ "versionAheadStr": branchAheadVersion, "versionBehindStr": branchBehindVersion || "0.0.0" }); - if (bumpType === "SAME") { + assert_1.assert(bumpType !== "betaPreRelease"); + if (bumpType === "same") { core.warning(`Version on ${branch} and ${branchBehind} are the same, not editing CHANGELOG.md`); return; } @@ -9147,7 +9249,7 @@ function updateChangelog(params) { .split("T")[0]; })(); const changelogRaw = [ - `${bumpType === "MAJOR" ? "#" : (bumpType === "MINOR" ? "##" : "###")}`, + `${bumpType === "major" ? "#" : (bumpType === "minor" ? "##" : "###")}`, ` **${version}** (${dateString}) \n \n`, `${body} \n \n`, params.changelogRaw @@ -9217,6 +9319,21 @@ function getCommonOriginFactory(params) { exports.getCommonOriginFactory = getCommonOriginFactory; +/***/ }), + +/***/ 723: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.assertIsRefWrapper = void 0; +var id_1 = __webpack_require__(440); +exports.assertIsRefWrapper = { + "ref": (0, id_1.id)(undefined), +}; +//# sourceMappingURL=assertIsRefWrapper.js.map + /***/ }), /***/ 742: @@ -9501,7 +9618,8 @@ exports.outputNames = [ "npm_or_yarn", "from_version", "to_version", - "is_upgraded_version" + "is_upgraded_version", + "is_release_beta" ]; function getOutputDescription(inputName) { switch (inputName) { @@ -9518,6 +9636,7 @@ function getOutputDescription(inputName) { case "from_version": return "Output of is_package_json_version_upgraded, string"; case "to_version": return "Output of is_package_json_version_upgraded, string"; case "is_upgraded_version": return "Output of is_package_json_version_upgraded, true|false"; + case "is_release_beta": return "Output of is_package_json_version_upgraded, true|false"; } } exports.getOutputDescription = getOutputDescription; @@ -10016,6 +10135,39 @@ function action(_actionName, params, core) { exports.action = action; +/***/ }), + +/***/ 834: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-namespace */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.is = void 0; +var assertIsRefWrapper_1 = __webpack_require__(723); +var errorMessage = [ + "Wrong usage of the " + is.name + " function refer to", + "https://docs.tsafe.dev/" + is.name.toLowerCase(), +].join(" "); +function is(_value) { + var ref = {}; + if (assertIsRefWrapper_1.assertIsRefWrapper.ref !== undefined) { + assertIsRefWrapper_1.assertIsRefWrapper.ref = undefined; + throw new Error(errorMessage); + } + assertIsRefWrapper_1.assertIsRefWrapper.ref = ref; + Promise.resolve().then(function () { + if (assertIsRefWrapper_1.assertIsRefWrapper.ref === ref) { + throw new Error(errorMessage); + } + }); + return null; +} +exports.is = is; +//# sourceMappingURL=is.js.map + /***/ }), /***/ 835: @@ -12236,15 +12388,17 @@ function action(_actionName, params, core) { core.debug(`Version on ${owner}/${repo}#${branch} is ${NpmModuleVersion_1.NpmModuleVersion.stringify(to_version)}`); const octokit = createOctokit_1.createOctokit({ github_token }); const { getLatestSemVersionedTag } = getLatestSemVersionedTag_1.getLatestSemVersionedTagFactory({ octokit }); - const { version: from_version } = yield getLatestSemVersionedTag({ owner, repo }) + const { version: from_version } = yield getLatestSemVersionedTag({ owner, repo, "doIgnoreBeta": false }) .then(wrap => wrap === undefined ? { "version": NpmModuleVersion_1.NpmModuleVersion.parse("0.0.0") } : wrap); core.debug(`Last version was ${NpmModuleVersion_1.NpmModuleVersion.stringify(from_version)}`); const is_upgraded_version = NpmModuleVersion_1.NpmModuleVersion.compare(to_version, from_version) === 1 ? "true" : "false"; core.debug(`Is version upgraded: ${is_upgraded_version}`); + const is_release_beta = is_upgraded_version === "false" ? "false" : to_version.betaPreRelease !== undefined ? "true" : "false"; return { "to_version": NpmModuleVersion_1.NpmModuleVersion.stringify(to_version), "from_version": NpmModuleVersion_1.NpmModuleVersion.stringify(from_version), - is_upgraded_version + is_upgraded_version, + is_release_beta }; }); } @@ -12743,6 +12897,65 @@ function onceStrict (fn) { } +/***/ }), + +/***/ 983: +/***/ (function(__unusedmodule, exports, __webpack_require__) { + +"use strict"; + +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.overwriteReadonlyProp = void 0; +/* eslint-disable no-empty */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +var assert_1 = __webpack_require__(606); +var is_1 = __webpack_require__(834); +/** + * Assign a value to a property even if the object is freezed or if the property is not writable + * Throw if the assignation fail ( for example if the property is non configurable write: false ) + * */ +var overwriteReadonlyProp = function (obj, propertyName, value) { + try { + obj[propertyName] = value; + } + catch (_a) { } + if (obj[propertyName] === value) { + return value; + } + var errorDefineProperty = undefined; + var propertyDescriptor = Object.getOwnPropertyDescriptor(obj, propertyName) || { + "enumerable": true, + "configurable": true, + }; + if (!!propertyDescriptor.get) { + throw new Error("Probably a wrong ides to overwrite " + propertyName + " getter"); + } + try { + Object.defineProperty(obj, propertyName, __assign(__assign({}, propertyDescriptor), { value: value })); + } + catch (error) { + (0, assert_1.assert)((0, is_1.is)(error)); + errorDefineProperty = error; + } + if (obj[propertyName] !== value) { + throw errorDefineProperty || new Error("Can't assign"); + } + return value; +}; +exports.overwriteReadonlyProp = overwriteReadonlyProp; +//# sourceMappingURL=overwriteReadonlyProp.js.map + /***/ }) /******/ }); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a4f77a0..b9206e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -779,6 +779,11 @@ "has-flag": "^3.0.0" } }, + "tsafe": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/tsafe/-/tsafe-0.8.1.tgz", + "integrity": "sha512-EfPjxQHzndQAV/uh0SMGP26Wg3dCuaw8dRv2VPEuGHen5qzg2oqsMvZw2wkQFkiMisZq2fm95m5lheimW2Fpvg==" + }, "typescript": { "version": "3.9.9", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", diff --git a/package.json b/package.json index e488447..01fde14 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "glob": "^7.1.6", "node-fetch": "^2.6.1", "scripting-tools": "^0.19.12", + "tsafe": "^0.8.1", "url-join": "^4.0.1", "validate-npm-package-name": "^3.0.0" }, diff --git a/src/is_package_json_version_upgraded.ts b/src/is_package_json_version_upgraded.ts index 488a64a..55c3630 100644 --- a/src/is_package_json_version_upgraded.ts +++ b/src/is_package_json_version_upgraded.ts @@ -22,7 +22,7 @@ type CoreLike = { debug: (message: string) => void; }; -export const { setOutput } = setOutputFactory<"from_version" | "to_version" | "is_upgraded_version">(); +export const { setOutput } = setOutputFactory<"from_version" | "to_version" | "is_upgraded_version" | "is_release_beta">(); export async function action( _actionName: "is_package_json_version_upgraded", @@ -46,7 +46,7 @@ export async function action( const { getLatestSemVersionedTag } = getLatestSemVersionedTagFactory({ octokit }); - const { version: from_version } = await getLatestSemVersionedTag({ owner, repo }) + const { version: from_version } = await getLatestSemVersionedTag({ owner, repo, "doIgnoreBeta": false }) .then(wrap => wrap === undefined ? { "version": NpmModuleVersion.parse("0.0.0") } : wrap); core.debug(`Last version was ${NpmModuleVersion.stringify(from_version)}`); @@ -58,10 +58,13 @@ export async function action( core.debug(`Is version upgraded: ${is_upgraded_version}`); + const is_release_beta= is_upgraded_version === "false" ? "false" : to_version.betaPreRelease !== undefined ? "true" : "false"; + return { "to_version": NpmModuleVersion.stringify(to_version), "from_version": NpmModuleVersion.stringify(from_version), - is_upgraded_version + is_upgraded_version, + is_release_beta }; } diff --git a/src/outputHelper.ts b/src/outputHelper.ts index 6f74d69..eca45e5 100644 --- a/src/outputHelper.ts +++ b/src/outputHelper.ts @@ -15,7 +15,8 @@ export const outputNames = [ "npm_or_yarn", "from_version", "to_version", - "is_upgraded_version" + "is_upgraded_version", + "is_release_beta" ] as const; @@ -34,6 +35,7 @@ export function getOutputDescription(inputName: typeof outputNames[number]): str case "from_version": return "Output of is_package_json_version_upgraded, string"; case "to_version": return "Output of is_package_json_version_upgraded, string"; case "is_upgraded_version": return "Output of is_package_json_version_upgraded, true|false"; + case "is_release_beta": return "Output of is_package_json_version_upgraded, true|false"; } } diff --git a/src/tools/NpmModuleVersion.ts b/src/tools/NpmModuleVersion.ts index 4c6fb09..31008c4 100644 --- a/src/tools/NpmModuleVersion.ts +++ b/src/tools/NpmModuleVersion.ts @@ -4,6 +4,7 @@ export type NpmModuleVersion = { major: number; minor: number; patch: number; + betaPreRelease?: number; }; export namespace NpmModuleVersion { @@ -12,20 +13,28 @@ export namespace NpmModuleVersion { const match = versionStr.match(/^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-beta.([0-9]+))?/); - if( !match ){ + if (!match) { throw new Error(`${versionStr} is not a valid NPM version`); } return { "major": parseInt(match[1]), "minor": parseInt(match[2]), - "patch": parseInt(match[3]) + "patch": parseInt(match[3]), + ...(() => { + + const str = match[4]; + return str === undefined ? + {} : + { "betaPreRelease": parseInt(str) }; + + })() }; }; export function stringify(v: NpmModuleVersion) { - return `${v.major}.${v.minor}.${v.patch}`; + return `${v.major}.${v.minor}.${v.patch}${v.betaPreRelease === undefined ? "" : `-beta.${v.betaPreRelease}`}`; } /** @@ -37,18 +46,17 @@ export namespace NpmModuleVersion { */ export function compare(v1: NpmModuleVersion, v2: NpmModuleVersion): -1 | 0 | 1 { - const sign = (n: number): -1 | 0 | 1 => n === 0 ? 0 : (n < 0 ? -1 : 1); + const sign = (diff: number): -1 | 0 | 1 => diff === 0 ? 0 : (diff < 0 ? -1 : 1); + const noUndefined= (n: number | undefined)=> n ?? -1; - if (v1.major === v2.major) { - if (v1.minor === v2.minor) { - return sign(v1.patch - v2.patch); - } else { - return sign(v1.minor - v2.minor); + for (const level of ["major", "minor", "patch", "betaPreRelease"] as const) { + if (noUndefined(v1[level]) !== noUndefined(v2[level])) { + return sign(noUndefined(v1[level]) - noUndefined(v2[level])); } - } else { - return sign(v1.major - v2.major); } + return 0; + } export function bumpType( @@ -56,34 +64,24 @@ export namespace NpmModuleVersion { versionBehindStr: string; versionAheadStr: string; } - ): "SAME" | "MAJOR" | "MINOR" | "PATCH" { + ): "major" | "minor" | "patch" | "betaPreRelease" | "same" { const versionAhead = parse(params.versionAheadStr); const versionBehind = parse(params.versionBehindStr); - if( compare(versionBehind, versionAhead) === 1 ){ + if (compare(versionBehind, versionAhead) === 1) { throw new Error(`Version regression ${versionBehind} -> ${versionAhead}`); } - if (versionBehind.major !== versionAhead.major) { - - return "MAJOR"; - - } else if (versionBehind.minor !== versionAhead.minor) { - - return "MINOR"; - - } else if (versionBehind.patch !== versionAhead.patch) { - - return "PATCH"; - - } else { - - return "SAME"; - + for (const level of ["major", "minor", "patch", "betaPreRelease"] as const) { + if (versionBehind[level] !== versionAhead[level]) { + return level; + } } + return "same"; + } } diff --git a/src/tools/octokit-addons/getLatestSemVersionedTag.ts b/src/tools/octokit-addons/getLatestSemVersionedTag.ts index 5af8316..a3bbfa5 100644 --- a/src/tools/octokit-addons/getLatestSemVersionedTag.ts +++ b/src/tools/octokit-addons/getLatestSemVersionedTag.ts @@ -11,13 +11,14 @@ export function getLatestSemVersionedTagFactory(params: { octokit: Octokit; }) { params: { owner: string; repo: string; + doIgnoreBeta: boolean; } ): Promise<{ tag: string; version: NpmModuleVersion; } | undefined> { - const { owner, repo } = params; + const { owner, repo, doIgnoreBeta } = params; const semVersionedTags: { tag: string; version: NpmModuleVersion; }[] = []; @@ -25,16 +26,21 @@ export function getLatestSemVersionedTagFactory(params: { octokit: Octokit; }) { for await (const tag of listTags({ owner, repo })) { - const match = tag.match(/^v?([0-9]+\.[0-9]+\.[0-9]+)$/); + let version: NpmModuleVersion; - if (!match) { + try{ + + version = NpmModuleVersion.parse(tag.replace(/^[vV]?/, "")); + + }catch{ continue; } - semVersionedTags.push({ - tag, - "version": NpmModuleVersion.parse( match[1]) - }); + if( doIgnoreBeta && version.betaPreRelease !== undefined ){ + continue; + } + + semVersionedTags.push({ tag, version }); } diff --git a/src/update_changelog.ts b/src/update_changelog.ts index 3733296..588b8ac 100644 --- a/src/update_changelog.ts +++ b/src/update_changelog.ts @@ -8,6 +8,7 @@ import { NpmModuleVersion } from "./tools/NpmModuleVersion"; import { gitCommit } from "./tools/gitCommit"; import { getLatestSemVersionedTagFactory } from "./tools/octokit-addons/getLatestSemVersionedTag"; import { createOctokit } from "./tools/createOctokit"; +import { assert } from "tsafe/assert"; export const { getActionParams } = getActionParamsFactory({ "inputNameSubset": [ @@ -53,7 +54,7 @@ export async function action( const { getLatestSemVersionedTag } = getLatestSemVersionedTagFactory({ octokit }); - const { tag: branchBehind } = (await getLatestSemVersionedTag({ owner, repo })) ?? {}; + const { tag: branchBehind } = (await getLatestSemVersionedTag({ owner, repo, "doIgnoreBeta": true })) ?? {}; if( branchBehind === undefined ){ @@ -97,13 +98,22 @@ export async function action( ) ); + if( NpmModuleVersion.parse(branchAheadVersion).betaPreRelease !== undefined ){ + + core.warning(`Version on ${branch} is ${branchAheadVersion} it's a beta release, we do not update the CHANGELOG.md`); + + return; + + } const bumpType = NpmModuleVersion.bumpType({ "versionAheadStr": branchAheadVersion, "versionBehindStr": branchBehindVersion || "0.0.0" }); - if( bumpType === "SAME" ){ + assert(bumpType !== "betaPreRelease"); + + if( bumpType === "same" ){ core.warning(`Version on ${branch} and ${branchBehind} are the same, not editing CHANGELOG.md`); @@ -162,7 +172,7 @@ function updateChangelog( params: { changelogRaw: string; version: string; - bumpType: "MAJOR" | "MINOR" | "PATCH"; + bumpType: "major" | "minor" | "patch"; body: string; } ): { changelogRaw: string; } { @@ -180,7 +190,7 @@ function updateChangelog( })(); const changelogRaw = [ - `${bumpType === "MAJOR" ? "#" : (bumpType === "MINOR" ? "##" : "###")}`, + `${bumpType === "major" ? "#" : (bumpType === "minor" ? "##" : "###")}`, ` **${version}** (${dateString}) \n \n`, `${body} \n \n`, params.changelogRaw