balena-cli
Version:
The official balena Command Line Interface
47 lines • 1.66 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.disambiguateReleaseParam = disambiguateReleaseParam;
exports.lowercaseIfSlug = lowercaseIfSlug;
exports.normalizeOsVersion = normalizeOsVersion;
const errors_1 = require("../errors");
async function disambiguateReleaseParam(balena, release) {
const mixedCaseHex = /^[a-fA-F0-9]+$/;
if (!release || !mixedCaseHex.test(release)) {
throw new errors_1.ExpectedError('Invalid release parameter');
}
const possibleUuidHashLength = [7, 8, 9, 32, 40, 62].includes(release.length);
const hasLeadingZero = release[0] === '0';
const isOnlyNumerical = /^[0-9]+$/.test(release);
if (!isOnlyNumerical && !possibleUuidHashLength) {
throw new errors_1.ExpectedError('Invalid release parameter');
}
if (hasLeadingZero && !possibleUuidHashLength) {
throw new errors_1.ExpectedError('Invalid release parameter');
}
if (!isOnlyNumerical || hasLeadingZero) {
return release;
}
try {
return (await balena.models.release.get(parseInt(release, 10), {
$select: 'id',
})).id;
}
catch (e) {
if (e.name !== 'BalenaReleaseNotFound') {
throw e;
}
}
return (await balena.models.release.get(release, { $select: 'id' })).id;
}
async function lowercaseIfSlug(s) {
return s.includes('/') ? s.toLowerCase() : s;
}
function normalizeOsVersion(version) {
if (/^v?\d+\.\d+\.\d+/.test(version)) {
if (version[0] === 'v') {
version = version.slice(1);
}
}
return version;
}
//# sourceMappingURL=normalization.js.map
;