@code-pushup/create-cli 0.126.1 → 0.126.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/README.md CHANGED
@@ -35,7 +35,7 @@ Each plugin exposes its own configuration keys that can be passed as CLI argumen
35
35
  | ------------------------- | --------- | ------------- | --------------------- |
36
36
  | **`--eslint.eslintrc`** | `string` | auto-detected | Path to ESLint config |
37
37
  | **`--eslint.patterns`** | `string` | `src` or `.` | File patterns to lint |
38
- | **`--eslint.categories`** | `boolean` | `true` | Add ESLint categories |
38
+ | **`--eslint.categories`** | `boolean` | `true` | Add categories |
39
39
 
40
40
  #### Coverage
41
41
 
@@ -47,37 +47,37 @@ Each plugin exposes its own configuration keys that can be passed as CLI argumen
47
47
  | **`--coverage.testCommand`** | `string` | auto-detected | Command to run tests |
48
48
  | **`--coverage.types`** | `('function'` \| `'branch'` \| `'line')[]` | all | Coverage types to measure |
49
49
  | **`--coverage.continueOnFail`** | `boolean` | `true` | Continue if test command fails |
50
- | **`--coverage.categories`** | `boolean` | `true` | Add Code coverage categories |
50
+ | **`--coverage.categories`** | `boolean` | `true` | Add categories |
51
51
 
52
52
  #### JS Packages
53
53
 
54
- | Option | Type | Default | Description |
55
- | ------------------------------------ | ---------------------------------------------------------- | ------------- | -------------------------- |
56
- | **`--js-packages.packageManager`** | `'npm'` \| `'yarn-classic'` \| `'yarn-modern'` \| `'pnpm'` | auto-detected | Package manager |
57
- | **`--js-packages.checks`** | `('audit'` \| `'outdated')[]` | both | Checks to run |
58
- | **`--js-packages.dependencyGroups`** | `('prod'` \| `'dev'` \| `'optional')[]` | `prod`, `dev` | Dependency groups |
59
- | **`--js-packages.categories`** | `boolean` | `true` | Add JS packages categories |
54
+ | Option | Type | Default | Description |
55
+ | ------------------------------------ | ---------------------------------------------------------- | ------------- | ----------------- |
56
+ | **`--js-packages.packageManager`** | `'npm'` \| `'yarn-classic'` \| `'yarn-modern'` \| `'pnpm'` | auto-detected | Package manager |
57
+ | **`--js-packages.checks`** | `('audit'` \| `'outdated')[]` | both | Checks to run |
58
+ | **`--js-packages.dependencyGroups`** | `('prod'` \| `'dev'` \| `'optional')[]` | `prod`, `dev` | Dependency groups |
59
+ | **`--js-packages.categories`** | `boolean` | `true` | Add categories |
60
60
 
61
61
  #### TypeScript
62
62
 
63
- | Option | Type | Default | Description |
64
- | ----------------------------- | --------- | ------------- | ------------------------- |
65
- | **`--typescript.tsconfig`** | `string` | auto-detected | TypeScript config file |
66
- | **`--typescript.categories`** | `boolean` | `true` | Add TypeScript categories |
63
+ | Option | Type | Default | Description |
64
+ | ----------------------------- | --------- | ------------- | ---------------------- |
65
+ | **`--typescript.tsconfig`** | `string` | auto-detected | TypeScript config file |
66
+ | **`--typescript.categories`** | `boolean` | `true` | Add categories |
67
67
 
68
68
  #### Lighthouse
69
69
 
70
70
  | Option | Type | Default | Description |
71
71
  | ----------------------------- | ---------------------------------------------------------------- | ----------------------- | ------------------------------- |
72
72
  | **`--lighthouse.urls`** | `string \| string[]` | `http://localhost:4200` | Target URL(s) (comma-separated) |
73
- | **`--lighthouse.categories`** | `('performance'` \| `'a11y'` \| `'best-practices'` \| `'seo')[]` | all | Lighthouse categories |
73
+ | **`--lighthouse.categories`** | `('performance'` \| `'a11y'` \| `'best-practices'` \| `'seo')[]` | all | Categories |
74
74
 
75
75
  #### JSDocs
76
76
 
77
77
  | Option | Type | Default | Description |
78
78
  | ------------------------- | -------------------- | -------------------------------------------- | -------------------------------------- |
79
79
  | **`--jsdocs.patterns`** | `string \| string[]` | `src/**/*.ts, src/**/*.js, !**/node_modules` | Source file patterns (comma-separated) |
80
- | **`--jsdocs.categories`** | `boolean` | `true` | Add JSDocs categories |
80
+ | **`--jsdocs.categories`** | `boolean` | `true` | Add categories |
81
81
 
82
82
  #### Axe
83
83
 
@@ -86,7 +86,7 @@ Each plugin exposes its own configuration keys that can be passed as CLI argumen
86
86
  | **`--axe.urls`** | `string \| string[]` | `http://localhost:4200` | Target URL(s) (comma-separated) |
87
87
  | **`--axe.preset`** | `'wcag21aa'` \| `'wcag22aa'` \| `'best-practice'` \| `'all'` | `wcag21aa` | Accessibility preset |
88
88
  | **`--axe.setupScript`** | `boolean` | `false` | Create setup script for auth-protected app |
89
- | **`--axe.categories`** | `boolean` | `true` | Add Axe categories |
89
+ | **`--axe.categories`** | `boolean` | `true` | Add categories |
90
90
 
91
91
  ### Examples
92
92
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/create-cli",
3
- "version": "0.126.1",
3
+ "version": "0.126.3",
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,15 +26,15 @@
26
26
  },
27
27
  "type": "module",
28
28
  "dependencies": {
29
- "@code-pushup/axe-plugin": "0.126.1",
30
- "@code-pushup/coverage-plugin": "0.126.1",
31
- "@code-pushup/eslint-plugin": "0.126.1",
32
- "@code-pushup/js-packages-plugin": "0.126.1",
33
- "@code-pushup/jsdocs-plugin": "0.126.1",
34
- "@code-pushup/lighthouse-plugin": "0.126.1",
35
- "@code-pushup/models": "0.126.1",
36
- "@code-pushup/typescript-plugin": "0.126.1",
37
- "@code-pushup/utils": "0.126.1",
29
+ "@code-pushup/axe-plugin": "0.126.3",
30
+ "@code-pushup/coverage-plugin": "0.126.3",
31
+ "@code-pushup/eslint-plugin": "0.126.3",
32
+ "@code-pushup/js-packages-plugin": "0.126.3",
33
+ "@code-pushup/jsdocs-plugin": "0.126.3",
34
+ "@code-pushup/lighthouse-plugin": "0.126.3",
35
+ "@code-pushup/models": "0.126.3",
36
+ "@code-pushup/typescript-plugin": "0.126.3",
37
+ "@code-pushup/utils": "0.126.3",
38
38
  "@inquirer/prompts": "^8.0.0",
39
39
  "yaml": "^2.5.1",
40
40
  "yargs": "^17.7.2"
package/src/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  #! /usr/bin/env node
2
- import yargs from 'yargs';
3
2
  import { hideBin } from 'yargs/helpers';
4
3
  import { axeSetupBinding } from '@code-pushup/axe-plugin';
5
4
  import { coverageSetupBinding } from '@code-pushup/coverage-plugin';
@@ -8,8 +7,7 @@ import { jsPackagesSetupBinding } from '@code-pushup/js-packages-plugin';
8
7
  import { jsDocsSetupBinding } from '@code-pushup/jsdocs-plugin';
9
8
  import { lighthouseSetupBinding } from '@code-pushup/lighthouse-plugin';
10
9
  import { typescriptSetupBinding } from '@code-pushup/typescript-plugin';
11
- import { parsePluginSlugs, validatePluginSlugs } from './lib/setup/plugins.js';
12
- import { CI_PROVIDERS, CONFIG_FILE_FORMATS, SETUP_MODES, } from './lib/setup/types.js';
10
+ import { yargsCli } from './lib/setup/cli-args.js';
13
11
  import { runSetupWizard } from './lib/setup/wizard.js';
14
12
  const bindings = [
15
13
  eslintSetupBinding,
@@ -20,42 +18,6 @@ const bindings = [
20
18
  axeSetupBinding,
21
19
  jsDocsSetupBinding,
22
20
  ];
23
- const argv = await yargs(hideBin(process.argv))
24
- .option('dry-run', {
25
- type: 'boolean',
26
- default: false,
27
- describe: 'Preview changes without writing files',
28
- })
29
- .option('yes', {
30
- alias: 'y',
31
- type: 'boolean',
32
- default: false,
33
- describe: 'Skip prompts and use defaults',
34
- })
35
- .option('config-format', {
36
- type: 'string',
37
- choices: CONFIG_FILE_FORMATS,
38
- describe: 'Config file format (default: auto-detected from project)',
39
- })
40
- .option('plugins', {
41
- type: 'string',
42
- describe: 'Comma-separated plugin slugs to include (e.g. eslint,coverage)',
43
- coerce: parsePluginSlugs,
44
- })
45
- .option('mode', {
46
- type: 'string',
47
- choices: SETUP_MODES,
48
- describe: 'Setup mode (default: auto-detected from project)',
49
- })
50
- .option('ci', {
51
- type: 'string',
52
- choices: CI_PROVIDERS,
53
- describe: 'CI/CD integration (github, gitlab, or none)',
54
- })
55
- .check(parsed => {
56
- validatePluginSlugs(bindings, parsed.plugins);
57
- return true;
58
- })
59
- .parse();
21
+ const argv = await yargsCli(bindings).parse(hideBin(process.argv));
60
22
  await runSetupWizard(bindings, argv);
61
23
  //# sourceMappingURL=index.js.map
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,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,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,MAAM,QAAQ,GAAyB;IACrC,kBAAkB;IAClB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,eAAe;IACf,kBAAkB;CACnB,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,QAAQ,GAAyB;IACrC,kBAAkB;IAClB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,eAAe;IACf,kBAAkB;CACnB,CAAC;AAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnE,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type Argv } from 'yargs';
2
+ import { type PluginSetupBinding } from './types.js';
3
+ export declare function yargsCli(bindings: PluginSetupBinding[]): Argv;
@@ -0,0 +1,47 @@
1
+ import yargs, {} from 'yargs';
2
+ import { parsePluginSlugs, validatePluginSlugs } from './plugins.js';
3
+ import { CI_PROVIDERS, CONFIG_FILE_FORMATS, SETUP_MODES, } from './types.js';
4
+ export function yargsCli(bindings) {
5
+ return yargs()
6
+ .scriptName('create-cli')
7
+ .usage('$0 [options]')
8
+ .parserConfiguration({ 'dot-notation': false })
9
+ .option('dry-run', {
10
+ type: 'boolean',
11
+ default: false,
12
+ describe: 'Preview changes without writing files',
13
+ })
14
+ .option('yes', {
15
+ alias: 'y',
16
+ type: 'boolean',
17
+ default: false,
18
+ describe: 'Skip prompts and use defaults',
19
+ })
20
+ .option('config-format', {
21
+ type: 'string',
22
+ choices: CONFIG_FILE_FORMATS,
23
+ describe: 'Config file format (default: auto-detected from project)',
24
+ })
25
+ .option('plugins', {
26
+ type: 'string',
27
+ describe: 'Comma-separated plugin slugs to include (e.g. eslint,coverage)',
28
+ coerce: parsePluginSlugs,
29
+ })
30
+ .option('mode', {
31
+ type: 'string',
32
+ choices: SETUP_MODES,
33
+ describe: 'Setup mode (default: auto-detected from project)',
34
+ })
35
+ .option('ci', {
36
+ type: 'string',
37
+ choices: CI_PROVIDERS,
38
+ describe: 'CI/CD integration (github, gitlab, or none)',
39
+ })
40
+ .check(parsed => {
41
+ validatePluginSlugs(bindings, parsed.plugins);
42
+ return true;
43
+ })
44
+ .help()
45
+ .version();
46
+ }
47
+ //# sourceMappingURL=cli-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../../../../src/lib/setup/cli-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,mBAAmB,EAEnB,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,QAAQ,CAAC,QAA8B;IACrD,OAAO,KAAK,EAAE;SACX,UAAU,CAAC,YAAY,CAAC;SACxB,KAAK,CAAC,cAAc,CAAC;SACrB,mBAAmB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;SAC9C,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,uCAAuC;KAClD,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,+BAA+B;KAC1C,CAAC;SACD,MAAM,CAAC,eAAe,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,mBAAmB;QAC5B,QAAQ,EAAE,0DAA0D;KACrE,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,QAAQ,EACN,gEAAgE;QAClE,MAAM,EAAE,gBAAgB;KACzB,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,kDAAkD;KAC7D,CAAC;SACD,MAAM,CAAC,IAAI,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,6CAA6C;KACxD,CAAC;SACD,KAAK,CAAC,MAAM,CAAC,EAAE;QACd,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,EAAE;SACN,OAAO,EAAE,CAAC;AACf,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { PluginCodegenResult } from '@code-pushup/models';
2
- import type { MonorepoTool } from '@code-pushup/utils';
3
- export type { CategoryCodegenConfig, ImportDeclarationStructure, PluginAnswer, PluginCodegenResult, PluginPromptDescriptor, PluginSetupBinding, PluginSetupTree, } from '@code-pushup/models';
2
+ import type { MonorepoTool, Tree } from '@code-pushup/utils';
3
+ export type { CategoryCodegenConfig, ImportDeclarationStructure, PluginAnswer, PluginCodegenInput, PluginCodegenResult, PluginPromptDescriptor, PluginSetupBinding, PluginSetupTree, } from '@code-pushup/models';
4
+ export type { FileChange, FileSystemAdapter, Tree } from '@code-pushup/utils';
4
5
  export declare const CI_PROVIDERS: readonly ["github", "gitlab", "none"];
5
6
  export type CiProvider = (typeof CI_PROVIDERS)[number];
6
7
  export declare const CONFIG_FILE_FORMATS: readonly ["ts", "js", "mjs"];
@@ -40,27 +41,3 @@ export type WriteContext = {
40
41
  configFilename: string;
41
42
  isEsm: boolean;
42
43
  };
43
- /** A single file operation recorded by the virtual tree. */
44
- export type FileChange = {
45
- path: string;
46
- type: 'CREATE' | 'UPDATE';
47
- content: string;
48
- };
49
- /** Virtual file system that buffers writes in memory until flushed to disk. */
50
- export type Tree = {
51
- root: string;
52
- exists: (filePath: string) => Promise<boolean>;
53
- read: (filePath: string) => Promise<string | null>;
54
- write: (filePath: string, content: string) => Promise<void>;
55
- listChanges: () => FileChange[];
56
- flush: () => Promise<void>;
57
- };
58
- /** Abstraction over `node:fs` used by the virtual tree for disk I/O. */
59
- export type FileSystemAdapter = {
60
- readFile: (path: string, encoding: 'utf8') => Promise<string>;
61
- writeFile: (path: string, content: string) => Promise<void>;
62
- exists: (path: string) => Promise<boolean>;
63
- mkdir: (path: string, options: {
64
- recursive: true;
65
- }) => Promise<string | undefined>;
66
- };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/setup/types.ts"],"names":[],"mappings":"AAaA,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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/setup/types.ts"],"names":[],"mappings":"AAgBA,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"}
@@ -1,12 +1,12 @@
1
+ import ansis from 'ansis';
1
2
  import path from 'node:path';
2
- import { asyncSequential, formatAsciiTable, getGitRoot, logger, toUnixPath, } from '@code-pushup/utils';
3
+ import { asyncSequential, createTree, formatAsciiTable, getGitRoot, logger, toUnixPath, } from '@code-pushup/utils';
3
4
  import { promptCiProvider, resolveCi } from './ci.js';
4
5
  import { computeRelativePresetImport, generateConfigSource, generatePresetSource, generateProjectSource, } from './codegen.js';
5
6
  import { promptConfigFormat, readPackageJson, resolveFilename, } from './config-format.js';
6
7
  import { resolveGitignore } from './gitignore.js';
7
8
  import { addCodePushUpCommand, listProjects, promptSetupMode, } from './monorepo.js';
8
9
  import { promptPluginOptions, promptPluginSelection } from './prompts.js';
9
- import { createTree } from './virtual-fs.js';
10
10
  /**
11
11
  * Runs the interactive setup wizard that generates a Code PushUp config file.
12
12
  *
@@ -33,25 +33,24 @@ export async function runSetupWizard(bindings, cliArgs) {
33
33
  : writeStandaloneConfig(writeContext, resolved.map(r => r.result)));
34
34
  await resolveGitignore(tree);
35
35
  await resolveCi(tree, ciProvider, context);
36
- logChanges(tree.listChanges());
37
- if (cliArgs['dry-run']) {
38
- logger.info('Dry run — no files written.');
39
- return;
40
- }
41
- await tree.flush();
42
- logger.info('Setup complete.');
43
- logger.newline();
44
- logNextSteps([
45
- ['npx code-pushup', 'Collect your first report'],
46
- ['https://github.com/code-pushup/cli#readme', 'Documentation'],
47
- ]);
36
+ await finalize(tree, cliArgs['dry-run']);
48
37
  }
49
38
  async function resolveBinding(binding, cliArgs, targetDir, tree) {
50
- const descriptors = binding.prompts ? await binding.prompts(targetDir) : [];
39
+ if (!binding.prompts) {
40
+ return binding.generateConfig({
41
+ tree,
42
+ targetDir,
43
+ cliArgs,
44
+ answers: {},
45
+ });
46
+ }
47
+ logger.newline();
48
+ logger.info(ansis.bold(binding.title));
49
+ const descriptors = await binding.prompts(targetDir);
51
50
  const answers = descriptors.length > 0
52
51
  ? await promptPluginOptions(descriptors, cliArgs)
53
52
  : {};
54
- return binding.generateConfig(answers, tree);
53
+ return binding.generateConfig({ tree, targetDir, cliArgs, answers });
55
54
  }
56
55
  async function writeStandaloneConfig({ tree, format, configFilename }, results) {
57
56
  await tree.write(configFilename, generateConfigSource(results, format));
@@ -75,15 +74,26 @@ async function writeMonorepoConfigs({ tree, format, configFilename, isEsm }, res
75
74
  await addCodePushUpCommand(tree, project, tool);
76
75
  }));
77
76
  }
78
- function logChanges(changes) {
79
- changes.forEach(change => {
77
+ async function finalize(tree, dryRun) {
78
+ logger.newline();
79
+ tree.listChanges().forEach(change => {
80
80
  logger.info(`${change.type} ${change.path}`);
81
81
  });
82
- }
83
- function logNextSteps(steps) {
82
+ if (dryRun) {
83
+ logger.newline();
84
+ logger.info('Dry run — no files written.');
85
+ return;
86
+ }
87
+ await tree.flush();
88
+ logger.newline();
89
+ logger.info('Setup complete.');
90
+ logger.newline();
84
91
  logger.info(formatAsciiTable({
85
92
  title: 'Next steps:',
86
- rows: steps,
93
+ rows: [
94
+ ['npx code-pushup', 'Collect your first report'],
95
+ ['https://github.com/code-pushup/cli#readme', 'Documentation'],
96
+ ],
87
97
  }, { borderless: true }));
88
98
  }
89
99
  //# sourceMappingURL=wizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../../src/lib/setup/wizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../../src/lib/setup/wizard.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import type { FileSystemAdapter, Tree } from './types.js';
2
- export declare function createTree(root: string, fs?: FileSystemAdapter): Tree;
@@ -1,46 +0,0 @@
1
- import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { fileExists } from '@code-pushup/utils';
4
- const DEFAULT_FS = {
5
- readFile,
6
- writeFile,
7
- exists: fileExists,
8
- mkdir,
9
- };
10
- export function createTree(root, fs = DEFAULT_FS) {
11
- const pending = new Map();
12
- const resolve = (filePath) => path.resolve(root, filePath);
13
- return {
14
- root,
15
- exists: async (filePath) => pending.has(filePath) || fs.exists(resolve(filePath)),
16
- read: async (filePath) => {
17
- const entry = pending.get(filePath);
18
- if (entry) {
19
- return entry.content;
20
- }
21
- const absolutePath = resolve(filePath);
22
- if (!(await fs.exists(absolutePath))) {
23
- return null;
24
- }
25
- return fs.readFile(absolutePath, 'utf8');
26
- },
27
- write: async (filePath, content) => {
28
- const type = (await fs.exists(resolve(filePath))) ? 'UPDATE' : 'CREATE';
29
- pending.set(filePath, { content, type });
30
- },
31
- listChanges: () => [...pending.entries()].map(([filePath, { content, type }]) => ({
32
- path: filePath,
33
- type,
34
- content,
35
- })),
36
- async flush() {
37
- await Promise.all([...pending.entries()].map(async ([filePath, { content }]) => {
38
- const absolutePath = resolve(filePath);
39
- await fs.mkdir(path.dirname(absolutePath), { recursive: true });
40
- await fs.writeFile(absolutePath, content);
41
- }));
42
- pending.clear();
43
- },
44
- };
45
- }
46
- //# sourceMappingURL=virtual-fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"virtual-fs.js","sourceRoot":"","sources":["../../../../src/lib/setup/virtual-fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,MAAM,UAAU,GAAsB;IACpC,QAAQ;IACR,SAAS;IACT,MAAM,EAAE,UAAU;IAClB,KAAK;CACN,CAAC;AAEF,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,KAAwB,UAAU;IAElC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgD,CAAC;IAExE,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3E,OAAO;QACL,IAAI;QAEJ,MAAM,EAAE,KAAK,EAAE,QAAgB,EAAoB,EAAE,CACnD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvD,IAAI,EAAE,KAAK,EAAE,QAAgB,EAA0B,EAAE;YACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,OAAO,CAAC;YACvB,CAAC;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,QAAgB,EAAE,OAAe,EAAiB,EAAE;YAChE,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW,EAAE,GAAiB,EAAE,CAC9B,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,OAAO;SACR,CAAC,CAAC;QAEL,KAAK,CAAC,KAAK;YACT,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;gBAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC,CAAC,CACH,CAAC;YACF,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}