@backstage/cli
Version:
CLI for developing Backstage plugins and apps
92 lines (86 loc) • 4.22 kB
JavaScript
var fs = require('fs-extra');
var semver = require('semver');
var paths = require('./paths.cjs.js');
var _package$1 = require('../packages/backend-plugin-api/package.json.cjs.js');
var _package$2 = require('../packages/backend-test-utils/package.json.cjs.js');
var _package$3 = require('../packages/catalog-client/package.json.cjs.js');
var _package$4 = require('../packages/cli/package.json.cjs.js');
var _package$5 = require('../packages/config/package.json.cjs.js');
var _package$6 = require('../packages/core-app-api/package.json.cjs.js');
var _package$7 = require('../packages/core-components/package.json.cjs.js');
var _package$8 = require('../packages/core-plugin-api/package.json.cjs.js');
var _package$9 = require('../packages/dev-utils/package.json.cjs.js');
var _package$a = require('../packages/errors/package.json.cjs.js');
var _package$b = require('../packages/test-utils/package.json.cjs.js');
var _package$d = require('../plugins/scaffolder-node/package.json.cjs.js');
var _package$e = require('../plugins/scaffolder-node-test-utils/package.json.cjs.js');
var _package$f = require('../plugins/auth-backend/package.json.cjs.js');
var _package$g = require('../plugins/auth-backend-module-guest-provider/package.json.cjs.js');
var _package$h = require('../plugins/catalog-node/package.json.cjs.js');
var _package$c = require('../packages/theme/package.json.cjs.js');
var _package = require('../packages/backend-defaults/package.json.cjs.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
var semver__default = /*#__PURE__*/_interopDefaultCompat(semver);
const packageVersions = {
"@backstage/backend-defaults": _package.version,
"@backstage/backend-plugin-api": _package$1.version,
"@backstage/backend-test-utils": _package$2.version,
"@backstage/catalog-client": _package$3.version,
"@backstage/cli": _package$4.version,
"@backstage/config": _package$5.version,
"@backstage/core-app-api": _package$6.version,
"@backstage/core-components": _package$7.version,
"@backstage/core-plugin-api": _package$8.version,
"@backstage/dev-utils": _package$9.version,
"@backstage/errors": _package$a.version,
"@backstage/test-utils": _package$b.version,
"@backstage/theme": _package$c.version,
"@backstage/plugin-scaffolder-node": _package$d.version,
"@backstage/plugin-scaffolder-node-test-utils": _package$e.version,
"@backstage/plugin-auth-backend": _package$f.version,
"@backstage/plugin-auth-backend-module-guest-provider": _package$g.version,
"@backstage/plugin-catalog-node": _package$h.version
};
function findVersion() {
const pkgContent = fs__default.default.readFileSync(paths.paths.resolveOwn("package.json"), "utf8");
return JSON.parse(pkgContent).version;
}
const version = findVersion();
fs__default.default.pathExistsSync(paths.paths.resolveOwn("src"));
function createPackageVersionProvider(lockfile) {
return (name, versionHint) => {
const packageVersion = packageVersions[name];
const targetVersion = versionHint || packageVersion;
if (!targetVersion) {
throw new Error(`No version available for package ${name}`);
}
const lockfileEntries = lockfile?.get(name);
for (const specifier of ["^", "~", "*"]) {
const range = `workspace:${specifier}`;
if (lockfileEntries?.some((entry) => entry.range === range)) {
return range;
}
}
const validRanges = lockfileEntries?.filter(
(entry) => semver__default.default.satisfies(targetVersion, entry.range)
);
const highestRange = validRanges?.slice(-1)[0];
if (highestRange?.range) {
return highestRange?.range;
}
if (packageVersion) {
return `^${packageVersion}`;
}
if (semver__default.default.parse(versionHint)?.prerelease.length) {
return versionHint;
}
return versionHint?.match(/^[\d\.]+$/) ? `^${versionHint}` : versionHint;
};
}
exports.createPackageVersionProvider = createPackageVersionProvider;
exports.findVersion = findVersion;
exports.packageVersions = packageVersions;
exports.version = version;
//# sourceMappingURL=version.cjs.js.map
;