UNPKG

@backstage/cli

Version:

CLI for developing Backstage plugins and apps

92 lines (86 loc) 2.89 kB
'use strict'; var chalk = require('chalk'); var path = require('path'); var cliNode = require('@backstage/cli-node'); var index = require('./index-ce56dce5.cjs.js'); var parallel = require('./parallel-a8f6219c.cjs.js'); require('commander'); require('fs-extra'); require('semver'); require('@backstage/cli-common'); require('@backstage/errors'); require('os'); require('worker_threads'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk); function depCount(pkg) { const deps = pkg.dependencies ? Object.keys(pkg.dependencies).length : 0; const devDeps = pkg.devDependencies ? Object.keys(pkg.devDependencies).length : 0; return deps + devDeps; } async function command(opts) { let packages = await cliNode.PackageGraph.listTargetPackages(); if (opts.since) { const graph = cliNode.PackageGraph.fromPackages(packages); packages = await graph.listChangedPackages({ ref: opts.since, analyzeLockfile: true }); } packages.sort((a, b) => depCount(b.packageJson) - depCount(a.packageJson)); if (opts.format === "eslint-formatter-friendly") { process.chdir(index.paths.targetRoot); } if (!process.env.FORCE_COLOR) { process.env.FORCE_COLOR = "1"; } const resultsList = await parallel.runWorkerQueueThreads({ items: packages.map((pkg) => ({ fullDir: pkg.dir, relativeDir: path.relative(index.paths.targetRoot, pkg.dir) })), workerData: { fix: Boolean(opts.fix), format: opts.format }, workerFactory: async ({ fix, format }) => { const { ESLint } = require("eslint"); return async ({ fullDir, relativeDir }) => { process.cwd = () => fullDir; const start = Date.now(); const eslint = new ESLint({ cwd: fullDir, fix, extensions: ["js", "jsx", "ts", "tsx", "mjs", "cjs"] }); const formatter = await eslint.loadFormatter(format); const results = await eslint.lintFiles(["."]); const count = String(results.length).padStart(3); const time = ((Date.now() - start) / 1e3).toFixed(2); console.log(`Checked ${count} files in ${relativeDir} ${time}s`); if (fix) { await ESLint.outputFixes(results); } const resultText = formatter.format(results); return { relativeDir, resultText }; }; } }); let failed = false; for (const { relativeDir, resultText } of resultsList) { if (resultText) { console.log(); console.log(chalk__default["default"].red(`Lint failed in ${relativeDir}:`)); console.log(resultText.trimStart()); failed = true; } } if (failed) { process.exit(1); } } exports.command = command; //# sourceMappingURL=lint-04d6d7e9.cjs.js.map