@backstage/cli-module-lint 0.1.2-next.0 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/bin/backstage-cli-module-lint +2 -2
- package/dist/commands/package/lint.cjs.js +1 -1
- package/dist/commands/package/lint.cjs.js.map +1 -1
- package/dist/commands/repo/lint.cjs.js +1 -1
- package/dist/commands/repo/lint.cjs.js.map +1 -1
- package/dist/package.json.cjs.js +5 -5
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @backstage/cli-module-lint
|
|
2
2
|
|
|
3
|
+
## 0.1.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 696c78c: The `--help` output for commands now shows a generated usage line that lists the available flags and any positional arguments the command accepts.
|
|
8
|
+
- 2e6ffe6: Updated the standalone CLI executable to use the new CLI module runner.
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
- @backstage/cli-node@0.3.3
|
|
11
|
+
|
|
12
|
+
## 0.1.2
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @backstage/cli-node@0.3.2
|
|
18
|
+
- @backstage/cli-common@0.2.2
|
|
19
|
+
|
|
3
20
|
## 0.1.2-next.0
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -26,7 +26,7 @@ if (isLocal) {
|
|
|
26
26
|
require('@backstage/cli-node/config/nodeTransform.cjs');
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
const {
|
|
29
|
+
const { runCli } = require('@backstage/cli-node');
|
|
30
30
|
const cliModule = require(isLocal ? '../src/index' : '..').default;
|
|
31
31
|
const pkg = require('../package.json');
|
|
32
|
-
|
|
32
|
+
runCli({ modules: [cliModule], name: pkg.name, version: pkg.version });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.cjs.js","sources":["../../../src/commands/package/lint.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs-extra';\nimport { cli } from 'cleye';\nimport { targetPaths } from '@backstage/cli-common';\nimport { ESLint } from 'eslint';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const {\n flags: { fix, format, outputFile, maxWarnings },\n _: directories,\n } = cli(\n {\n
|
|
1
|
+
{"version":3,"file":"lint.cjs.js","sources":["../../../src/commands/package/lint.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs-extra';\nimport { cli } from 'cleye';\nimport { targetPaths } from '@backstage/cli-common';\nimport { ESLint } from 'eslint';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nexport default async ({ args, info }: CliCommandContext) => {\n const {\n flags: { fix, format, outputFile, maxWarnings },\n _: directories,\n } = cli(\n {\n name: info.usage,\n booleanFlagNegation: true,\n parameters: ['[directories...]'],\n flags: {\n fix: {\n type: Boolean,\n description: 'Attempt to automatically fix violations',\n },\n format: {\n type: String,\n description: 'Lint report output format',\n default: 'eslint-formatter-friendly',\n },\n outputFile: {\n type: String,\n description: 'Write the lint report to a file instead of stdout',\n },\n maxWarnings: {\n type: String,\n description:\n 'Fail if more than this number of warnings. -1 allows warnings. (default: -1)',\n },\n },\n },\n undefined,\n args,\n );\n\n const eslint = new ESLint({\n cwd: targetPaths.dir,\n fix,\n extensions: ['js', 'jsx', 'ts', 'tsx', 'mjs', 'cjs'],\n });\n\n const results = await eslint.lintFiles(\n directories.length ? directories : ['.'],\n );\n\n const maxWarningsNum = maxWarnings ? +maxWarnings : -1;\n const ignoreWarnings = maxWarningsNum === -1;\n\n const failed =\n results.some(r => r.errorCount > 0) ||\n (!ignoreWarnings &&\n results.reduce((current, next) => current + next.warningCount, 0) >\n maxWarningsNum);\n\n if (fix) {\n await ESLint.outputFixes(results);\n }\n\n const formatter = await eslint.loadFormatter(format);\n\n // This formatter uses the cwd to format file paths, so let's have that happen from the root instead\n if (format === 'eslint-formatter-friendly') {\n process.chdir(targetPaths.rootDir);\n }\n\n const resultText = await formatter.format(results);\n\n if (resultText) {\n if (outputFile) {\n await fs.writeFile(targetPaths.resolve(outputFile), resultText);\n } else {\n console.log(resultText);\n }\n }\n\n if (failed) {\n process.exit(1);\n }\n};\n"],"names":["cli","eslint","ESLint","targetPaths","fs"],"mappings":";;;;;;;;;;;;;AAsBA,WAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,EAAE,GAAA,EAAK,MAAA,EAAQ,YAAY,WAAA,EAAY;AAAA,IAC9C,CAAA,EAAG;AAAA,GACL,GAAIA,SAAA;AAAA,IACF;AAAA,MACE,MAAM,IAAA,CAAK,KAAA;AAAA,MACX,mBAAA,EAAqB,IAAA;AAAA,MACrB,UAAA,EAAY,CAAC,kBAAkB,CAAA;AAAA,MAC/B,KAAA,EAAO;AAAA,QACL,GAAA,EAAK;AAAA,UACH,IAAA,EAAM,OAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACf;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EAAa,2BAAA;AAAA,UACb,OAAA,EAAS;AAAA,SACX;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACf;AAAA,QACA,WAAA,EAAa;AAAA,UACX,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EACE;AAAA;AACJ;AACF,KACF;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAMC,QAAA,GAAS,IAAIC,aAAA,CAAO;AAAA,IACxB,KAAKC,qBAAA,CAAY,GAAA;AAAA,IACjB,GAAA;AAAA,IACA,YAAY,CAAC,IAAA,EAAM,OAAO,IAAA,EAAM,KAAA,EAAO,OAAO,KAAK;AAAA,GACpD,CAAA;AAED,EAAA,MAAM,OAAA,GAAU,MAAMF,QAAA,CAAO,SAAA;AAAA,IAC3B,WAAA,CAAY,MAAA,GAAS,WAAA,GAAc,CAAC,GAAG;AAAA,GACzC;AAEA,EAAA,MAAM,cAAA,GAAiB,WAAA,GAAc,CAAC,WAAA,GAAc,EAAA;AACpD,EAAA,MAAM,iBAAiB,cAAA,KAAmB,EAAA;AAE1C,EAAA,MAAM,SACJ,OAAA,CAAQ,IAAA,CAAK,OAAK,CAAA,CAAE,UAAA,GAAa,CAAC,CAAA,IACjC,CAAC,kBACA,OAAA,CAAQ,MAAA,CAAO,CAAC,OAAA,EAAS,IAAA,KAAS,UAAU,IAAA,CAAK,YAAA,EAAc,CAAC,CAAA,GAC9D,cAAA;AAEN,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAMC,aAAA,CAAO,YAAY,OAAO,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,SAAA,GAAY,MAAMD,QAAA,CAAO,aAAA,CAAc,MAAM,CAAA;AAGnD,EAAA,IAAI,WAAW,2BAAA,EAA6B;AAC1C,IAAA,OAAA,CAAQ,KAAA,CAAME,sBAAY,OAAO,CAAA;AAAA,EACnC;AAEA,EAAA,MAAM,UAAA,GAAa,MAAM,SAAA,CAAU,MAAA,CAAO,OAAO,CAAA;AAEjD,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAMC,oBAAG,SAAA,CAAUD,qBAAA,CAAY,OAAA,CAAQ,UAAU,GAAG,UAAU,CAAA;AAAA,IAChE,CAAA,MAAO;AACL,MAAA,OAAA,CAAQ,IAAI,UAAU,CAAA;AAAA,IACxB;AAAA,EACF;AAEA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.cjs.js","sources":["../../../src/commands/repo/lint.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport { cli } from 'cleye';\nimport { createHash } from 'node:crypto';\nimport { relative as relativePath } from 'node:path';\nimport {\n PackageGraph,\n BackstagePackageJson,\n Lockfile,\n runWorkerQueueThreads,\n SuccessCache,\n} from '@backstage/cli-node';\nimport { targetPaths } from '@backstage/cli-common';\n\nimport { createScriptOptionsParser } from '../../lib/optionsParser';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nfunction depCount(pkg: BackstagePackageJson) {\n const deps = pkg.dependencies ? Object.keys(pkg.dependencies).length : 0;\n const devDeps = pkg.devDependencies\n ? Object.keys(pkg.devDependencies).length\n : 0;\n return deps + devDeps;\n}\n\nexport default async ({ args, info }: CliCommandContext) => {\n for (const flag of [\n 'outputFile',\n 'successCache',\n 'successCacheDir',\n 'maxWarnings',\n ]) {\n if (args.some(a => a === `--${flag}` || a.startsWith(`--${flag}=`))) {\n process.stderr.write(\n `DEPRECATION WARNING: --${flag} is deprecated, use the kebab-case form instead\\n`,\n );\n }\n }\n\n const {\n flags: {\n fix,\n format,\n outputFile,\n successCache: useSuccessCache,\n successCacheDir,\n since,\n maxWarnings,\n },\n } = cli(\n {\n help: info,\n booleanFlagNegation: true,\n flags: {\n fix: {\n type: Boolean,\n description: 'Attempt to automatically fix violations',\n },\n format: {\n type: String,\n description: 'Lint report output format',\n default: 'eslint-formatter-friendly',\n },\n outputFile: {\n type: String,\n description: 'Write the lint report to a file instead of stdout',\n },\n successCache: {\n type: Boolean,\n description:\n 'Enable success caching, which skips running tests for unchanged packages that were successful in the previous run',\n },\n successCacheDir: {\n type: String,\n description:\n 'Set the success cache location, (default: node_modules/.cache/backstage-cli)',\n },\n since: {\n type: String,\n description:\n 'Only lint packages that changed since the specified ref',\n },\n maxWarnings: {\n type: String,\n description:\n 'Fail if more than this number of warnings. -1 allows warnings. (default: -1)',\n },\n },\n },\n undefined,\n args,\n );\n\n let packages = await PackageGraph.listTargetPackages();\n\n const cache = SuccessCache.create({\n name: 'lint',\n basePath: successCacheDir,\n });\n const cacheContext = useSuccessCache\n ? {\n entries: await cache.read(),\n lockfile: await Lockfile.load(targetPaths.resolveRoot('yarn.lock')),\n }\n : undefined;\n\n if (since) {\n const graph = PackageGraph.fromPackages(packages);\n packages = await graph.listChangedPackages({\n ref: since,\n analyzeLockfile: true,\n });\n }\n\n // Packages are ordered from most to least number of dependencies, as a\n // very cheap way of guessing which packages are more likely to be larger.\n packages.sort((a, b) => depCount(b.packageJson) - depCount(a.packageJson));\n\n // This formatter uses the cwd to format file paths, so let's have that happen from the root instead\n if (format === 'eslint-formatter-friendly') {\n process.chdir(targetPaths.rootDir);\n }\n\n // Make sure lint output is colored unless the user explicitly disabled it\n if (!process.env.FORCE_COLOR) {\n process.env.FORCE_COLOR = '1';\n }\n\n const parseLintScript = createScriptOptionsParser(['package', 'lint'], {\n fix: { type: 'boolean' },\n format: { type: 'string' },\n 'output-file': { type: 'string' },\n 'max-warnings': { type: 'string' },\n });\n\n const items = await Promise.all(\n packages.map(async pkg => {\n const lintOptions = parseLintScript(pkg.packageJson.scripts?.lint);\n const base = {\n fullDir: pkg.dir,\n relativeDir: relativePath(targetPaths.rootDir, pkg.dir),\n lintOptions,\n parentHash: undefined,\n };\n\n if (!cacheContext) {\n return base;\n }\n\n const hash = createHash('sha1');\n\n hash.update(\n cacheContext.lockfile.getDependencyTreeHash(pkg.packageJson.name),\n );\n hash.update('\\0');\n hash.update(JSON.stringify(lintOptions ?? {}));\n hash.update('\\0');\n hash.update(process.version); // Node.js version\n hash.update('\\0');\n hash.update('v1'); // The version of this implementation\n\n return {\n ...base,\n parentHash: hash.digest('hex'),\n };\n }),\n );\n\n const { results: resultsList } = await runWorkerQueueThreads({\n items: items.filter(item => item.lintOptions), // Filter out packages without lint script\n context: {\n fix: Boolean(fix),\n format: format as string | undefined,\n shouldCache: Boolean(cacheContext),\n maxWarnings: maxWarnings ?? '-1',\n successCache: cacheContext?.entries,\n rootDir: targetPaths.rootDir,\n },\n workerFactory: async ({\n fix: workerFix,\n format: workerFormat,\n shouldCache,\n successCache,\n rootDir,\n maxWarnings: workerMaxWarnings,\n }) => {\n const { ESLint } = require('eslint') as typeof import('eslint');\n const crypto = require('node:crypto') as typeof import('crypto');\n const globby = require('globby') as typeof import('globby');\n const { readFile } =\n require('node:fs/promises') as typeof import('fs/promises');\n const workerPath = require('node:path') as typeof import('path');\n\n return async ({\n fullDir,\n relativeDir,\n parentHash,\n }): Promise<{\n relativeDir: string;\n sha?: string;\n resultText?: string;\n failed: boolean;\n }> => {\n // Bit of a hack to make file resolutions happen from the correct directory\n // since some lint rules don't respect the cwd of ESLint\n process.cwd = () => fullDir;\n\n const start = Date.now();\n const eslint = new ESLint({\n cwd: fullDir,\n fix: workerFix,\n extensions: ['js', 'jsx', 'ts', 'tsx', 'mjs', 'cjs'],\n });\n\n let sha: string | undefined = undefined;\n if (shouldCache) {\n const result = await globby(relativeDir, {\n gitignore: true,\n onlyFiles: true,\n cwd: rootDir,\n });\n\n const hash = crypto.createHash('sha1');\n hash.update(parentHash!);\n hash.update('\\0');\n\n for (const path of result.sort()) {\n const absPath = workerPath.resolve(rootDir, path);\n const pathInPackage = workerPath.relative(fullDir, absPath);\n\n if (await eslint.isPathIgnored(pathInPackage)) {\n continue;\n }\n hash.update(pathInPackage);\n hash.update('\\0');\n hash.update(await readFile(absPath));\n hash.update('\\0');\n hash.update(\n JSON.stringify(\n await eslint.calculateConfigForFile(pathInPackage),\n ).replaceAll(rootDir, ''),\n );\n hash.update('\\0');\n }\n sha = await hash.digest('hex');\n if (successCache?.has(sha)) {\n console.log(`Skipped ${relativeDir} due to cache hit`);\n return { relativeDir, sha, failed: false };\n }\n }\n\n const formatter = await eslint.loadFormatter(workerFormat);\n\n const results = await eslint.lintFiles(['.']);\n\n const count = String(results.length).padStart(3);\n const time = ((Date.now() - start) / 1000).toFixed(2);\n console.log(`Checked ${count} files in ${relativeDir} ${time}s`);\n\n if (workerFix) {\n await ESLint.outputFixes(results);\n }\n\n const ignoreWarnings = +workerMaxWarnings === -1;\n\n const resultText = formatter.format(results) as string;\n const failed =\n results.some(r => r.errorCount > 0) ||\n (!ignoreWarnings &&\n results.reduce((current, next) => current + next.warningCount, 0) >\n +workerMaxWarnings);\n\n return {\n relativeDir,\n resultText,\n failed,\n sha,\n };\n };\n },\n });\n\n const outputSuccessCache = [];\n const jsonResults = [];\n\n let errorOutput = '';\n\n let failed = false;\n for (const {\n relativeDir,\n resultText,\n failed: runFailed,\n sha,\n } of resultsList) {\n if (runFailed) {\n console.log(chalk.red(`Lint failed in ${relativeDir}`));\n failed = true;\n\n // When doing repo lint, only list the results if the lint failed to avoid a log\n // dump of all warnings that might be irrelevant\n if (resultText) {\n if (outputFile) {\n if (format === 'json') {\n jsonResults.push(resultText);\n } else {\n errorOutput += `${resultText}\\n`;\n }\n } else {\n console.log();\n console.log(resultText.trimStart());\n }\n }\n } else if (sha) {\n outputSuccessCache.push(sha);\n }\n }\n\n if (format === 'json') {\n let mergedJsonResults: any[] = [];\n for (const jsonResult of jsonResults) {\n mergedJsonResults = mergedJsonResults.concat(JSON.parse(jsonResult));\n }\n errorOutput = JSON.stringify(mergedJsonResults, null, 2);\n }\n\n if (outputFile && errorOutput) {\n await fs.writeFile(targetPaths.resolveRoot(outputFile), errorOutput);\n }\n\n if (cacheContext) {\n await cache.write(outputSuccessCache);\n }\n\n if (failed) {\n process.exit(1);\n }\n};\n"],"names":["cli","PackageGraph","SuccessCache","Lockfile","targetPaths","createScriptOptionsParser","relativePath","createHash","runWorkerQueueThreads","failed","chalk","fs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lint.cjs.js","sources":["../../../src/commands/repo/lint.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport { cli } from 'cleye';\nimport { createHash } from 'node:crypto';\nimport { relative as relativePath } from 'node:path';\nimport {\n PackageGraph,\n BackstagePackageJson,\n Lockfile,\n runWorkerQueueThreads,\n SuccessCache,\n} from '@backstage/cli-node';\nimport { targetPaths } from '@backstage/cli-common';\n\nimport { createScriptOptionsParser } from '../../lib/optionsParser';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nfunction depCount(pkg: BackstagePackageJson) {\n const deps = pkg.dependencies ? Object.keys(pkg.dependencies).length : 0;\n const devDeps = pkg.devDependencies\n ? Object.keys(pkg.devDependencies).length\n : 0;\n return deps + devDeps;\n}\n\nexport default async ({ args, info }: CliCommandContext) => {\n for (const flag of [\n 'outputFile',\n 'successCache',\n 'successCacheDir',\n 'maxWarnings',\n ]) {\n if (args.some(a => a === `--${flag}` || a.startsWith(`--${flag}=`))) {\n process.stderr.write(\n `DEPRECATION WARNING: --${flag} is deprecated, use the kebab-case form instead\\n`,\n );\n }\n }\n\n const {\n flags: {\n fix,\n format,\n outputFile,\n successCache: useSuccessCache,\n successCacheDir,\n since,\n maxWarnings,\n },\n } = cli(\n {\n name: info.usage,\n booleanFlagNegation: true,\n flags: {\n fix: {\n type: Boolean,\n description: 'Attempt to automatically fix violations',\n },\n format: {\n type: String,\n description: 'Lint report output format',\n default: 'eslint-formatter-friendly',\n },\n outputFile: {\n type: String,\n description: 'Write the lint report to a file instead of stdout',\n },\n successCache: {\n type: Boolean,\n description:\n 'Enable success caching, which skips running tests for unchanged packages that were successful in the previous run',\n },\n successCacheDir: {\n type: String,\n description:\n 'Set the success cache location, (default: node_modules/.cache/backstage-cli)',\n },\n since: {\n type: String,\n description:\n 'Only lint packages that changed since the specified ref',\n },\n maxWarnings: {\n type: String,\n description:\n 'Fail if more than this number of warnings. -1 allows warnings. (default: -1)',\n },\n },\n },\n undefined,\n args,\n );\n\n let packages = await PackageGraph.listTargetPackages();\n\n const cache = SuccessCache.create({\n name: 'lint',\n basePath: successCacheDir,\n });\n const cacheContext = useSuccessCache\n ? {\n entries: await cache.read(),\n lockfile: await Lockfile.load(targetPaths.resolveRoot('yarn.lock')),\n }\n : undefined;\n\n if (since) {\n const graph = PackageGraph.fromPackages(packages);\n packages = await graph.listChangedPackages({\n ref: since,\n analyzeLockfile: true,\n });\n }\n\n // Packages are ordered from most to least number of dependencies, as a\n // very cheap way of guessing which packages are more likely to be larger.\n packages.sort((a, b) => depCount(b.packageJson) - depCount(a.packageJson));\n\n // This formatter uses the cwd to format file paths, so let's have that happen from the root instead\n if (format === 'eslint-formatter-friendly') {\n process.chdir(targetPaths.rootDir);\n }\n\n // Make sure lint output is colored unless the user explicitly disabled it\n if (!process.env.FORCE_COLOR) {\n process.env.FORCE_COLOR = '1';\n }\n\n const parseLintScript = createScriptOptionsParser(['package', 'lint'], {\n fix: { type: 'boolean' },\n format: { type: 'string' },\n 'output-file': { type: 'string' },\n 'max-warnings': { type: 'string' },\n });\n\n const items = await Promise.all(\n packages.map(async pkg => {\n const lintOptions = parseLintScript(pkg.packageJson.scripts?.lint);\n const base = {\n fullDir: pkg.dir,\n relativeDir: relativePath(targetPaths.rootDir, pkg.dir),\n lintOptions,\n parentHash: undefined,\n };\n\n if (!cacheContext) {\n return base;\n }\n\n const hash = createHash('sha1');\n\n hash.update(\n cacheContext.lockfile.getDependencyTreeHash(pkg.packageJson.name),\n );\n hash.update('\\0');\n hash.update(JSON.stringify(lintOptions ?? {}));\n hash.update('\\0');\n hash.update(process.version); // Node.js version\n hash.update('\\0');\n hash.update('v1'); // The version of this implementation\n\n return {\n ...base,\n parentHash: hash.digest('hex'),\n };\n }),\n );\n\n const { results: resultsList } = await runWorkerQueueThreads({\n items: items.filter(item => item.lintOptions), // Filter out packages without lint script\n context: {\n fix: Boolean(fix),\n format: format as string | undefined,\n shouldCache: Boolean(cacheContext),\n maxWarnings: maxWarnings ?? '-1',\n successCache: cacheContext?.entries,\n rootDir: targetPaths.rootDir,\n },\n workerFactory: async ({\n fix: workerFix,\n format: workerFormat,\n shouldCache,\n successCache,\n rootDir,\n maxWarnings: workerMaxWarnings,\n }) => {\n const { ESLint } = require('eslint') as typeof import('eslint');\n const crypto = require('node:crypto') as typeof import('crypto');\n const globby = require('globby') as typeof import('globby');\n const { readFile } =\n require('node:fs/promises') as typeof import('fs/promises');\n const workerPath = require('node:path') as typeof import('path');\n\n return async ({\n fullDir,\n relativeDir,\n parentHash,\n }): Promise<{\n relativeDir: string;\n sha?: string;\n resultText?: string;\n failed: boolean;\n }> => {\n // Bit of a hack to make file resolutions happen from the correct directory\n // since some lint rules don't respect the cwd of ESLint\n process.cwd = () => fullDir;\n\n const start = Date.now();\n const eslint = new ESLint({\n cwd: fullDir,\n fix: workerFix,\n extensions: ['js', 'jsx', 'ts', 'tsx', 'mjs', 'cjs'],\n });\n\n let sha: string | undefined = undefined;\n if (shouldCache) {\n const result = await globby(relativeDir, {\n gitignore: true,\n onlyFiles: true,\n cwd: rootDir,\n });\n\n const hash = crypto.createHash('sha1');\n hash.update(parentHash!);\n hash.update('\\0');\n\n for (const path of result.sort()) {\n const absPath = workerPath.resolve(rootDir, path);\n const pathInPackage = workerPath.relative(fullDir, absPath);\n\n if (await eslint.isPathIgnored(pathInPackage)) {\n continue;\n }\n hash.update(pathInPackage);\n hash.update('\\0');\n hash.update(await readFile(absPath));\n hash.update('\\0');\n hash.update(\n JSON.stringify(\n await eslint.calculateConfigForFile(pathInPackage),\n ).replaceAll(rootDir, ''),\n );\n hash.update('\\0');\n }\n sha = await hash.digest('hex');\n if (successCache?.has(sha)) {\n console.log(`Skipped ${relativeDir} due to cache hit`);\n return { relativeDir, sha, failed: false };\n }\n }\n\n const formatter = await eslint.loadFormatter(workerFormat);\n\n const results = await eslint.lintFiles(['.']);\n\n const count = String(results.length).padStart(3);\n const time = ((Date.now() - start) / 1000).toFixed(2);\n console.log(`Checked ${count} files in ${relativeDir} ${time}s`);\n\n if (workerFix) {\n await ESLint.outputFixes(results);\n }\n\n const ignoreWarnings = +workerMaxWarnings === -1;\n\n const resultText = formatter.format(results) as string;\n const failed =\n results.some(r => r.errorCount > 0) ||\n (!ignoreWarnings &&\n results.reduce((current, next) => current + next.warningCount, 0) >\n +workerMaxWarnings);\n\n return {\n relativeDir,\n resultText,\n failed,\n sha,\n };\n };\n },\n });\n\n const outputSuccessCache = [];\n const jsonResults = [];\n\n let errorOutput = '';\n\n let failed = false;\n for (const {\n relativeDir,\n resultText,\n failed: runFailed,\n sha,\n } of resultsList) {\n if (runFailed) {\n console.log(chalk.red(`Lint failed in ${relativeDir}`));\n failed = true;\n\n // When doing repo lint, only list the results if the lint failed to avoid a log\n // dump of all warnings that might be irrelevant\n if (resultText) {\n if (outputFile) {\n if (format === 'json') {\n jsonResults.push(resultText);\n } else {\n errorOutput += `${resultText}\\n`;\n }\n } else {\n console.log();\n console.log(resultText.trimStart());\n }\n }\n } else if (sha) {\n outputSuccessCache.push(sha);\n }\n }\n\n if (format === 'json') {\n let mergedJsonResults: any[] = [];\n for (const jsonResult of jsonResults) {\n mergedJsonResults = mergedJsonResults.concat(JSON.parse(jsonResult));\n }\n errorOutput = JSON.stringify(mergedJsonResults, null, 2);\n }\n\n if (outputFile && errorOutput) {\n await fs.writeFile(targetPaths.resolveRoot(outputFile), errorOutput);\n }\n\n if (cacheContext) {\n await cache.write(outputSuccessCache);\n }\n\n if (failed) {\n process.exit(1);\n }\n};\n"],"names":["cli","PackageGraph","SuccessCache","Lockfile","targetPaths","createScriptOptionsParser","relativePath","createHash","runWorkerQueueThreads","failed","chalk","fs"],"mappings":"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"}
|
package/dist/package.json.cjs.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var name = "@backstage/cli-module-lint";
|
|
6
|
-
var version = "0.1.
|
|
6
|
+
var version = "0.1.3";
|
|
7
7
|
var description = "CLI module for Backstage CLI";
|
|
8
8
|
var backstage = {
|
|
9
9
|
role: "cli-module"
|
|
@@ -22,6 +22,7 @@ var repository = {
|
|
|
22
22
|
var license = "Apache-2.0";
|
|
23
23
|
var main = "src/index.ts";
|
|
24
24
|
var types = "src/index.ts";
|
|
25
|
+
var bin = "bin/backstage-cli-module-lint";
|
|
25
26
|
var files = [
|
|
26
27
|
"dist",
|
|
27
28
|
"bin"
|
|
@@ -38,7 +39,7 @@ var dependencies = {
|
|
|
38
39
|
"@backstage/cli-common": "workspace:^",
|
|
39
40
|
"@backstage/cli-node": "workspace:^",
|
|
40
41
|
chalk: "^4.0.0",
|
|
41
|
-
cleye: "^2.
|
|
42
|
+
cleye: "^2.6.0",
|
|
42
43
|
eslint: "^8.6.0",
|
|
43
44
|
"eslint-formatter-friendly": "^7.0.0",
|
|
44
45
|
"fs-extra": "^11.2.0",
|
|
@@ -50,7 +51,6 @@ var devDependencies = {
|
|
|
50
51
|
"@types/fs-extra": "^11.0.0",
|
|
51
52
|
"@types/shell-quote": "^1.7.5"
|
|
52
53
|
};
|
|
53
|
-
var bin = "bin/backstage-cli-module-lint";
|
|
54
54
|
var packageJson = {
|
|
55
55
|
name: name,
|
|
56
56
|
version: version,
|
|
@@ -62,11 +62,11 @@ var packageJson = {
|
|
|
62
62
|
license: license,
|
|
63
63
|
main: main,
|
|
64
64
|
types: types,
|
|
65
|
+
bin: bin,
|
|
65
66
|
files: files,
|
|
66
67
|
scripts: scripts,
|
|
67
68
|
dependencies: dependencies,
|
|
68
|
-
devDependencies: devDependencies
|
|
69
|
-
bin: bin
|
|
69
|
+
devDependencies: devDependencies
|
|
70
70
|
};
|
|
71
71
|
|
|
72
72
|
exports.backstage = backstage;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/cli-module-lint",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "CLI module for Backstage CLI",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "cli-module"
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"license": "Apache-2.0",
|
|
20
20
|
"main": "dist/index.cjs.js",
|
|
21
21
|
"types": "dist/index.d.ts",
|
|
22
|
+
"bin": "bin/backstage-cli-module-lint",
|
|
22
23
|
"files": [
|
|
23
24
|
"dist",
|
|
24
25
|
"bin"
|
|
@@ -32,10 +33,10 @@
|
|
|
32
33
|
"test": "backstage-cli package test"
|
|
33
34
|
},
|
|
34
35
|
"dependencies": {
|
|
35
|
-
"@backstage/cli-common": "0.2.2
|
|
36
|
-
"@backstage/cli-node": "0.3.
|
|
36
|
+
"@backstage/cli-common": "^0.2.2",
|
|
37
|
+
"@backstage/cli-node": "^0.3.3",
|
|
37
38
|
"chalk": "^4.0.0",
|
|
38
|
-
"cleye": "^2.
|
|
39
|
+
"cleye": "^2.6.0",
|
|
39
40
|
"eslint": "^8.6.0",
|
|
40
41
|
"eslint-formatter-friendly": "^7.0.0",
|
|
41
42
|
"fs-extra": "^11.2.0",
|
|
@@ -43,11 +44,10 @@
|
|
|
43
44
|
"shell-quote": "^1.8.1"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@backstage/cli": "0.36.
|
|
47
|
+
"@backstage/cli": "^0.36.3",
|
|
47
48
|
"@types/fs-extra": "^11.0.0",
|
|
48
49
|
"@types/shell-quote": "^1.7.5"
|
|
49
50
|
},
|
|
50
|
-
"bin": "bin/backstage-cli-module-lint",
|
|
51
51
|
"typesVersions": {
|
|
52
52
|
"*": {
|
|
53
53
|
"package.json": [
|