@backstage/cli
Version:
CLI for developing Backstage plugins and apps
134 lines (128 loc) • 3.99 kB
JavaScript
var os = require('os');
var PackageGraph = require('./PackageGraph-84e587f4.cjs.js');
var index = require('./index-d2845aa8.cjs.js');
var run = require('./run-eac5f3ab.cjs.js');
require('path');
require('@manypkg/get-packages');
require('@backstage/errors');
require('child_process');
require('util');
require('./Lockfile-e5943b84.cjs.js');
require('fs-extra');
require('semver');
require('@yarnpkg/parsers');
require('@yarnpkg/lockfile');
require('minimatch');
require('chalk');
require('./yarn-8315d2ff.cjs.js');
require('commander');
require('@backstage/cli-common');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
function createFlagFinder(args) {
const flags = /* @__PURE__ */ new Set();
for (const arg of args) {
if (arg.startsWith("--no-")) {
flags.add(`--${arg.slice("--no-".length)}`);
} else if (arg.startsWith("--")) {
flags.add(arg.split("=")[0]);
} else if (arg.startsWith("-")) {
const shortFlags = arg.slice(1).split("");
for (const shortFlag of shortFlags) {
flags.add(`-${shortFlag}`);
}
}
}
return (...findFlags) => {
for (const flag of findFlags) {
if (flags.has(flag)) {
return true;
}
}
return false;
};
}
function removeOptionArg(args, option) {
let changed = false;
do {
changed = false;
const index = args.indexOf(option);
if (index >= 0) {
changed = true;
args.splice(index, 2);
}
const indexEq = args.findIndex((arg) => arg.startsWith(`${option}=`));
if (indexEq >= 0) {
changed = true;
args.splice(indexEq, 1);
}
} while (changed);
}
async function command(opts, cmd) {
let parent = cmd;
while (parent.parent) {
parent = parent.parent;
}
const allArgs = parent.args;
const args = allArgs.slice(allArgs.indexOf("test") + 1);
const hasFlags = createFlagFinder(args);
if (!hasFlags("-c", "--config")) {
args.push("--config", index.paths.resolveOwn("config/jest.js"));
}
if (!hasFlags("--passWithNoTests")) {
args.push("--passWithNoTests");
}
if (!process.env.CI && !hasFlags("--coverage", "--watch", "--watchAll")) {
const isGitRepo = () => run.runCheck("git", "rev-parse", "--is-inside-work-tree");
const isMercurialRepo = () => run.runCheck("hg", "--cwd", ".", "root");
if (await isGitRepo() || await isMercurialRepo()) {
args.push("--watch");
} else {
args.push("--watchAll");
}
}
if (!hasFlags("--workerIdleMemoryLimit")) {
args.push("--workerIdleMemoryLimit=1000M");
}
if (os__default["default"].cpus().length <= 3 && !hasFlags("-i", "--runInBand", "-w", "--maxWorkers")) {
args.push("--maxWorkers=2");
}
if (opts.since) {
removeOptionArg(args, "--since");
}
if (opts.since && !hasFlags("--selectProjects")) {
const packages = await PackageGraph.PackageGraph.listTargetPackages();
const graph = PackageGraph.PackageGraph.fromPackages(packages);
const changedPackages = await graph.listChangedPackages({
ref: opts.since,
analyzeLockfile: true
});
const packageNames = Array.from(
graph.collectPackageNames(
changedPackages.map((pkg) => pkg.name),
(pkg) => pkg.allLocalDependents.keys()
)
);
if (packageNames.length === 0) {
console.log(`No packages changed since ${opts.since}`);
return;
}
args.push("--selectProjects", ...packageNames);
}
if (!process.env.NODE_ENV) {
process.env.NODE_ENV = "test";
}
if (!process.env.TZ) {
process.env.TZ = "UTC";
}
if (args.includes("--jest-help")) {
removeOptionArg(args, "--jest-help");
args.push("--help");
process.stdout._handle.setBlocking(true);
}
await require("jest").run(args);
}
exports.command = command;
exports.createFlagFinder = createFlagFinder;
//# sourceMappingURL=test-364cf6e1.cjs.js.map
;