@code-pushup/create-cli 0.120.1 → 0.121.0
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/README.md +15 -3
- package/package.json +5 -4
- package/src/index.js +6 -2
- package/src/index.js.map +1 -1
- package/src/lib/setup/types.d.ts +1 -1
- package/src/lib/setup/types.js.map +1 -1
- package/src/lib/setup/wizard.js +4 -4
- package/src/lib/setup/wizard.js.map +1 -1
package/README.md
CHANGED
|
@@ -37,6 +37,18 @@ Each plugin exposes its own configuration keys that can be passed as CLI argumen
|
|
|
37
37
|
| **`--eslint.patterns`** | `string` | `src` or `.` | File patterns to lint |
|
|
38
38
|
| **`--eslint.categories`** | `boolean` | `true` | Add recommended categories |
|
|
39
39
|
|
|
40
|
+
#### Coverage
|
|
41
|
+
|
|
42
|
+
| Option | Type | Default | Description |
|
|
43
|
+
| ------------------------------- | ------------------------------------------ | -------------------- | ------------------------------ |
|
|
44
|
+
| **`--coverage.framework`** | `'jest'` \| `'vitest'` \| `'other'` | auto-detected | Test framework |
|
|
45
|
+
| **`--coverage.configFile`** | `string` | auto-detected | Path to test config file |
|
|
46
|
+
| **`--coverage.reportPath`** | `string` | `coverage/lcov.info` | Path to LCOV report file |
|
|
47
|
+
| **`--coverage.testCommand`** | `string` | auto-detected | Command to run tests |
|
|
48
|
+
| **`--coverage.types`** | `('function'` \| `'branch'` \| `'line')[]` | all | Coverage types to measure |
|
|
49
|
+
| **`--coverage.continueOnFail`** | `boolean` | `true` | Continue if test command fails |
|
|
50
|
+
| **`--coverage.categories`** | `boolean` | `true` | Add code coverage category |
|
|
51
|
+
|
|
40
52
|
### Examples
|
|
41
53
|
|
|
42
54
|
Run interactively (default):
|
|
@@ -48,17 +60,17 @@ npm init @code-pushup/cli
|
|
|
48
60
|
Skip prompts and enable specific plugins:
|
|
49
61
|
|
|
50
62
|
```bash
|
|
51
|
-
npm init @code-pushup/cli -y --plugins=eslint,coverage
|
|
63
|
+
npm init @code-pushup/cli -- -y --plugins=eslint,coverage
|
|
52
64
|
```
|
|
53
65
|
|
|
54
66
|
Set up a monorepo with GitHub CI integration:
|
|
55
67
|
|
|
56
68
|
```bash
|
|
57
|
-
npm init @code-pushup/cli --mode=monorepo --ci=github
|
|
69
|
+
npm init @code-pushup/cli -- --mode=monorepo --ci=github
|
|
58
70
|
```
|
|
59
71
|
|
|
60
72
|
Preview the generated config without writing:
|
|
61
73
|
|
|
62
74
|
```bash
|
|
63
|
-
npm init @code-pushup/cli -y --dry-run
|
|
75
|
+
npm init @code-pushup/cli -- -y --dry-run
|
|
64
76
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/create-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.121.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"bin": "./bin.js",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/create-cli#readme",
|
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@code-pushup/
|
|
30
|
-
"@code-pushup/
|
|
31
|
-
"@code-pushup/
|
|
29
|
+
"@code-pushup/coverage-plugin": "0.121.0",
|
|
30
|
+
"@code-pushup/eslint-plugin": "0.121.0",
|
|
31
|
+
"@code-pushup/models": "0.121.0",
|
|
32
|
+
"@code-pushup/utils": "0.121.0",
|
|
32
33
|
"@inquirer/prompts": "^8.0.0",
|
|
33
34
|
"yaml": "^2.5.1",
|
|
34
35
|
"yargs": "^17.7.2"
|
package/src/index.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
2
|
import yargs from 'yargs';
|
|
3
3
|
import { hideBin } from 'yargs/helpers';
|
|
4
|
+
import { coverageSetupBinding } from '@code-pushup/coverage-plugin';
|
|
4
5
|
import { eslintSetupBinding } from '@code-pushup/eslint-plugin';
|
|
5
6
|
import { parsePluginSlugs, validatePluginSlugs } from './lib/setup/plugins.js';
|
|
6
7
|
import { CI_PROVIDERS, CONFIG_FILE_FORMATS, SETUP_MODES, } from './lib/setup/types.js';
|
|
7
8
|
import { runSetupWizard } from './lib/setup/wizard.js';
|
|
8
|
-
// TODO: create, import and pass remaining plugin bindings (
|
|
9
|
-
const bindings = [
|
|
9
|
+
// TODO: create, import and pass remaining plugin bindings (lighthouse, typescript, js-packages, jsdocs, axe)
|
|
10
|
+
const bindings = [
|
|
11
|
+
eslintSetupBinding,
|
|
12
|
+
coverageSetupBinding,
|
|
13
|
+
];
|
|
10
14
|
const argv = await yargs(hideBin(process.argv))
|
|
11
15
|
.option('dry-run', {
|
|
12
16
|
type: 'boolean',
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EAEnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EAEnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,6GAA6G;AAC7G,MAAM,QAAQ,GAAyB;IACrC,kBAAkB;IAClB,oBAAoB;CACrB,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,uCAAuC;CAClD,CAAC;KACD,MAAM,CAAC,KAAK,EAAE;IACb,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,+BAA+B;CAC1C,CAAC;KACD,MAAM,CAAC,eAAe,EAAE;IACvB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,0DAA0D;CACrE,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,gEAAgE;IAC1E,MAAM,EAAE,gBAAgB;CACzB,CAAC;KACD,MAAM,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,kDAAkD;CAC7D,CAAC;KACD,MAAM,CAAC,IAAI,EAAE;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,6CAA6C;CACxD,CAAC;KACD,KAAK,CAAC,MAAM,CAAC,EAAE;IACd,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC"}
|
package/src/lib/setup/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { PluginCodegenResult } from '@code-pushup/models';
|
|
2
2
|
import type { MonorepoTool } from '@code-pushup/utils';
|
|
3
|
-
export type { ImportDeclarationStructure, PluginAnswer, PluginCodegenResult, PluginPromptDescriptor, PluginSetupBinding, } from '@code-pushup/models';
|
|
3
|
+
export type { ImportDeclarationStructure, PluginAnswer, PluginCodegenResult, PluginPromptDescriptor, PluginSetupBinding, PluginSetupTree, } from '@code-pushup/models';
|
|
4
4
|
export declare const CI_PROVIDERS: readonly ["github", "gitlab", "none"];
|
|
5
5
|
export type CiProvider = (typeof CI_PROVIDERS)[number];
|
|
6
6
|
export declare const CONFIG_FILE_FORMATS: readonly ["ts", "js", "mjs"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/setup/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/setup/types.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGlE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AAGhE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,UAAU,CAAU,CAAC;AAG/D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC"}
|
package/src/lib/setup/wizard.js
CHANGED
|
@@ -19,14 +19,14 @@ export async function runSetupWizard(bindings, cliArgs) {
|
|
|
19
19
|
const selectedBindings = await promptPluginSelection(bindings, targetDir, cliArgs);
|
|
20
20
|
const format = await promptConfigFormat(targetDir, cliArgs);
|
|
21
21
|
const ciProvider = await promptCiProvider(cliArgs);
|
|
22
|
+
const tree = createTree(await getGitRoot());
|
|
22
23
|
const resolved = await asyncSequential(selectedBindings, async (binding) => ({
|
|
23
24
|
scope: binding.scope ?? 'project',
|
|
24
|
-
result: await resolveBinding(binding, cliArgs, targetDir),
|
|
25
|
+
result: await resolveBinding(binding, cliArgs, targetDir, tree),
|
|
25
26
|
}));
|
|
26
27
|
const packageJson = await readPackageJson(targetDir);
|
|
27
28
|
const isEsm = packageJson.type === 'module';
|
|
28
29
|
const configFilename = resolveFilename('code-pushup.config', format, isEsm);
|
|
29
|
-
const tree = createTree(await getGitRoot());
|
|
30
30
|
const writeContext = { tree, format, configFilename, isEsm };
|
|
31
31
|
await (context.mode === 'monorepo' && context.tool != null
|
|
32
32
|
? writeMonorepoConfigs(writeContext, resolved, targetDir, context.tool)
|
|
@@ -46,12 +46,12 @@ export async function runSetupWizard(bindings, cliArgs) {
|
|
|
46
46
|
['https://github.com/code-pushup/cli#readme', 'Documentation'],
|
|
47
47
|
]);
|
|
48
48
|
}
|
|
49
|
-
async function resolveBinding(binding, cliArgs, targetDir) {
|
|
49
|
+
async function resolveBinding(binding, cliArgs, targetDir, tree) {
|
|
50
50
|
const descriptors = binding.prompts ? await binding.prompts(targetDir) : [];
|
|
51
51
|
const answers = descriptors.length > 0
|
|
52
52
|
? await promptPluginOptions(descriptors, cliArgs)
|
|
53
53
|
: {};
|
|
54
|
-
return binding.generateConfig(answers);
|
|
54
|
+
return binding.generateConfig(answers, tree);
|
|
55
55
|
}
|
|
56
56
|
async function writeStandaloneConfig({ tree, format, configFilename }, results) {
|
|
57
57
|
await tree.write(configFilename, generateConfigSource(results, format));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../../src/lib/setup/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../../src/lib/setup/wizard.ts"],"names":[],"mappings":"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"}
|