From a550f37dc41e396949815bcf7d56e93af262d697 Mon Sep 17 00:00:00 2001 From: Mahmoud Mazouz Date: Mon, 17 Jun 2024 12:43:52 +0200 Subject: [PATCH] fix: Make release numbers follow the Debian Policy --- dist/build-crates-debian-main.js | 36 +++++++++++++++++++++++---- dist/build-crates-standalone-main.js | 37 +++++++++++++++++++++++----- dist/bump-crates-main.js | 36 +++++++++++++++++++++++---- dist/publish-crates-cargo-main.js | 37 +++++++++++++++++++++++----- dist/publish-crates-debian-main.js | 37 +++++++++++++++++++++++----- dist/publish-crates-eclipse-main.js | 37 +++++++++++++++++++++++----- dist/publish-crates-github-main.js | 37 +++++++++++++++++++++++----- dist/publish-crates-homebrew-main.js | 37 +++++++++++++++++++++++----- src/cargo.ts | 33 ++++++++++++++++++++++--- 9 files changed, 278 insertions(+), 49 deletions(-) diff --git a/dist/build-crates-debian-main.js b/dist/build-crates-debian-main.js index 495b2e6..d5d652c 100644 --- a/dist/build-crates-debian-main.js +++ b/dist/build-crates-debian-main.js @@ -127255,6 +127255,7 @@ __webpack_async_result__(); "use strict"; __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { /* harmony export */ __nccwpck_require__.d(__webpack_exports__, { +/* harmony export */ "$l": () => (/* binding */ toDebianVersion), /* harmony export */ "Mj": () => (/* binding */ installBinaryCached), /* harmony export */ "ib": () => (/* binding */ packagesDebian), /* harmony export */ "lY": () => (/* binding */ buildDebian) @@ -127271,8 +127272,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(79839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(28121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(81724); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -127402,7 +127405,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -127508,7 +127511,7 @@ function buildDebian(path, target, version) { (0,_command__WEBPACK_IMPORTED_MODULE_5__.sh)(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${_cargo__WEBPACK_IMPORTED_MODULE_7__/* .toDebianVersion */ .$l(version)} \ --variant ${variant}`, { cwd: path, }); @@ -127518,12 +127521,35 @@ function buildDebian(path, target, version) { (0,_command__WEBPACK_IMPORTED_MODULE_5__.sh)(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${_cargo__WEBPACK_IMPORTED_MODULE_7__/* .toDebianVersion */ .$l(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/build-crates-standalone-main.js b/dist/build-crates-standalone-main.js index 6f08d8c..d108476 100644 --- a/dist/build-crates-standalone-main.js +++ b/dist/build-crates-standalone-main.js @@ -127244,7 +127244,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony export */ "KD": () => (/* binding */ hostTarget), /* harmony export */ "Mj": () => (/* binding */ installBinaryCached) /* harmony export */ }); -/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, buildDebian */ +/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, buildDebian, toDebianVersion */ /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(22037); /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(71017); @@ -127256,8 +127256,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(79839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(28121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(81724); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -127387,7 +127389,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -127493,7 +127495,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -127503,12 +127505,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/bump-crates-main.js b/dist/bump-crates-main.js index 8536337..d0b2946 100644 --- a/dist/bump-crates-main.js +++ b/dist/bump-crates-main.js @@ -80961,6 +80961,7 @@ __webpack_async_result__(); "use strict"; __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try { /* harmony export */ __nccwpck_require__.d(__webpack_exports__, { +/* harmony export */ "$l": () => (/* binding */ toDebianVersion), /* harmony export */ "HU": () => (/* binding */ bump), /* harmony export */ "Mj": () => (/* binding */ installBinaryCached), /* harmony export */ "UR": () => (/* binding */ bumpDependencies) @@ -80977,8 +80978,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(9839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(8121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(98); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(8683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -81108,7 +81111,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${_cargo__WEBPACK_IMPORTED_MODULE_7__/* .toDebianVersion */ .$l(version)})`); _actions_core__WEBPACK_IMPORTED_MODULE_2__.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -81214,7 +81217,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -81224,12 +81227,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/publish-crates-cargo-main.js b/dist/publish-crates-cargo-main.js index 3f46404..c81a04c 100644 --- a/dist/publish-crates-cargo-main.js +++ b/dist/publish-crates-cargo-main.js @@ -80853,7 +80853,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony export */ "p3": () => (/* binding */ configRegistry), /* harmony export */ "r4": () => (/* binding */ packagesOrdered) /* harmony export */ }); -/* unused harmony exports packages, bump, bumpDependencies, packagesDebian, build, hostTarget, buildDebian */ +/* unused harmony exports packages, bump, bumpDependencies, packagesDebian, build, hostTarget, buildDebian, toDebianVersion */ /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2037); /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(1017); @@ -80865,8 +80865,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(9839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(8121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(98); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(8683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -80996,7 +80998,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -81102,7 +81104,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -81112,12 +81114,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/publish-crates-debian-main.js b/dist/publish-crates-debian-main.js index 50a5c18..a577809 100644 --- a/dist/publish-crates-debian-main.js +++ b/dist/publish-crates-debian-main.js @@ -127239,7 +127239,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony export */ __nccwpck_require__.d(__webpack_exports__, { /* harmony export */ "Mj": () => (/* binding */ installBinaryCached) /* harmony export */ }); -/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian */ +/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian, toDebianVersion */ /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(22037); /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(71017); @@ -127251,8 +127251,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(79839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(28121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(81724); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -127382,7 +127384,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -127488,7 +127490,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -127498,12 +127500,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/publish-crates-eclipse-main.js b/dist/publish-crates-eclipse-main.js index 5e3a63b..f212343 100644 --- a/dist/publish-crates-eclipse-main.js +++ b/dist/publish-crates-eclipse-main.js @@ -127320,7 +127320,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony export */ __nccwpck_require__.d(__webpack_exports__, { /* harmony export */ "Mj": () => (/* binding */ installBinaryCached) /* harmony export */ }); -/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian */ +/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian, toDebianVersion */ /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(22037); /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(71017); @@ -127332,8 +127332,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(79839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(28121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(81724); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -127463,7 +127465,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -127569,7 +127571,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -127579,12 +127581,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/publish-crates-github-main.js b/dist/publish-crates-github-main.js index 9bf1bea..6903988 100644 --- a/dist/publish-crates-github-main.js +++ b/dist/publish-crates-github-main.js @@ -127320,7 +127320,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony export */ __nccwpck_require__.d(__webpack_exports__, { /* harmony export */ "Mj": () => (/* binding */ installBinaryCached) /* harmony export */ }); -/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian */ +/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian, toDebianVersion */ /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(22037); /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(71017); @@ -127332,8 +127332,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(79839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(28121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(81724); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -127463,7 +127465,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -127569,7 +127571,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -127579,12 +127581,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/dist/publish-crates-homebrew-main.js b/dist/publish-crates-homebrew-main.js index bac65bf..3ba95e2 100644 --- a/dist/publish-crates-homebrew-main.js +++ b/dist/publish-crates-homebrew-main.js @@ -127224,7 +127224,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony export */ __nccwpck_require__.d(__webpack_exports__, { /* harmony export */ "Mj": () => (/* binding */ installBinaryCached) /* harmony export */ }); -/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian */ +/* unused harmony exports packages, packagesOrdered, bump, bumpDependencies, setRegistry, configRegistry, packagesDebian, build, hostTarget, buildDebian, toDebianVersion */ /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(22037); /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(71017); @@ -127236,8 +127236,10 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we /* harmony import */ var _toml__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(79839); /* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(28121); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(81724); -var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__]); -_toml__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0]; +/* harmony import */ var _cargo__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(98683); +var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__]); +([_toml__WEBPACK_IMPORTED_MODULE_4__, _cargo__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__); + @@ -127367,7 +127369,7 @@ async function bumpDependencies(path, pattern, version, _branch) { manifest.package.metadata.deb.depends != "$auto" && pattern.test(manifest.package.metadata.deb.name)) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -127473,7 +127475,7 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, }); @@ -127483,12 +127485,35 @@ function buildDebian(path, target, version) { sh(`cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, { + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }); } } } +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +function toDebianVersion(version, revision) { + revision = revision ?? 1; + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } + else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +} __webpack_async_result__(); } catch(e) { __webpack_async_result__(e); } }, 1); diff --git a/src/cargo.ts b/src/cargo.ts index 30bf5b5..7b7594e 100644 --- a/src/cargo.ts +++ b/src/cargo.ts @@ -7,6 +7,7 @@ import * as cache from "@actions/cache"; import { TOML } from "./toml"; import { sh } from "./command"; import { config } from "./config"; +import * as cargo from "./cargo"; const toml = await TOML.init(); @@ -207,7 +208,7 @@ export async function bumpDependencies(path: string, pattern: RegExp, version: s pattern.test(manifest.package.metadata.deb.name) ) { const deb = manifest.package.metadata.deb; - const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${version})`); + const depends = deb.depends.replaceAll(/\(=[^\(\)]+\)/g, `(=${cargo.toDebianVersion(version)})`); core.info(`Changing ${deb.depends} to ${depends} in ${package_.name}`); await toml.set(package_.manifestPath, ["package", "metadata", "deb", "depends"], depends); } @@ -335,7 +336,7 @@ export function buildDebian(path: string, target: string, version: string) { `cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version} \ + --deb-version ${cargo.toDebianVersion(version)} \ --variant ${variant}`, { cwd: path, @@ -347,7 +348,7 @@ export function buildDebian(path: string, target: string, version: string) { `cargo deb --no-build --no-strip \ --target ${target} \ --package ${package_.name} \ - --deb-version ${version}`, + --deb-version ${cargo.toDebianVersion(version)}`, { cwd: path, }, @@ -355,3 +356,29 @@ export function buildDebian(path: string, target: string, version: string) { } } } + +/** + * Transforms a version number to a version number that conforms to the Debian Policy. + * @param version Version number. + * @param revision Package revision number. + * @returns Modified version. + */ +export function toDebianVersion(version: string, revision?: number): string { + revision = revision ?? 1; + + const re = /^(\d+\.\d+\.\d+)(?:-((?:alpha|beta|rc)\.\d+))?$/g; + const matches = Array.from(version.matchAll(re)); + + if (matches.length === 0) { + throw Error(`Unsupported version format: ${version}`); + } + const [base, suffix] = matches[0].slice(1); + + if (suffix === undefined) { + // In this case the version is of the form X.Y.Z + return `${base}-${revision}`; + } else { + // In this case the version is of the form X.Y.Z-(alpha|beta|rc).N + return `${base}~${suffix}-${revision}`; + } +}