archprint 0.4.1 → 0.6.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.
Files changed (106) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/README.md +74 -51
  3. package/dist/cli/adoption-readme.d.ts +7 -0
  4. package/dist/cli/adoption-readme.d.ts.map +1 -0
  5. package/dist/cli/adoption-readme.js +76 -0
  6. package/dist/cli/adoption-readme.js.map +1 -0
  7. package/dist/cli/archprint-config.d.ts +33 -0
  8. package/dist/cli/archprint-config.d.ts.map +1 -0
  9. package/dist/cli/archprint-config.js +83 -0
  10. package/dist/cli/archprint-config.js.map +1 -0
  11. package/dist/cli/generate.d.ts +44 -37
  12. package/dist/cli/generate.d.ts.map +1 -1
  13. package/dist/cli/generate.js +167 -258
  14. package/dist/cli/generate.js.map +1 -1
  15. package/dist/cli/ignore-file.d.ts +8 -0
  16. package/dist/cli/ignore-file.d.ts.map +1 -0
  17. package/dist/cli/ignore-file.js +37 -0
  18. package/dist/cli/ignore-file.js.map +1 -0
  19. package/dist/cli/layout.d.ts +24 -0
  20. package/dist/cli/layout.d.ts.map +1 -0
  21. package/dist/cli/layout.js +74 -0
  22. package/dist/cli/layout.js.map +1 -0
  23. package/dist/cli/migrate.d.ts +27 -0
  24. package/dist/cli/migrate.d.ts.map +1 -0
  25. package/dist/cli/migrate.js +177 -0
  26. package/dist/cli/migrate.js.map +1 -0
  27. package/dist/cli/outputs-manifest.d.ts +0 -6
  28. package/dist/cli/outputs-manifest.d.ts.map +1 -1
  29. package/dist/cli/outputs-manifest.js +2 -29
  30. package/dist/cli/outputs-manifest.js.map +1 -1
  31. package/dist/cli/program.d.ts +1 -0
  32. package/dist/cli/program.d.ts.map +1 -1
  33. package/dist/cli/program.js +237 -51
  34. package/dist/cli/program.js.map +1 -1
  35. package/dist/cli/recommend.d.ts +5 -1
  36. package/dist/cli/recommend.d.ts.map +1 -1
  37. package/dist/cli/recommend.js +42 -2
  38. package/dist/cli/recommend.js.map +1 -1
  39. package/dist/cli/report.d.ts +4 -2
  40. package/dist/cli/report.d.ts.map +1 -1
  41. package/dist/cli/report.js +31 -5
  42. package/dist/cli/report.js.map +1 -1
  43. package/dist/cli/wiring.d.ts +2 -13
  44. package/dist/cli/wiring.d.ts.map +1 -1
  45. package/dist/cli/wiring.js +63 -110
  46. package/dist/cli/wiring.js.map +1 -1
  47. package/dist/detector/family-maturity.d.ts.map +1 -1
  48. package/dist/detector/family-maturity.js +0 -2
  49. package/dist/detector/family-maturity.js.map +1 -1
  50. package/dist/generator/console-isolation-emitters.d.ts +3 -0
  51. package/dist/generator/console-isolation-emitters.d.ts.map +1 -1
  52. package/dist/generator/console-isolation-emitters.js +5 -1
  53. package/dist/generator/console-isolation-emitters.js.map +1 -1
  54. package/dist/generator/deep-relative-emitters.d.ts +4 -0
  55. package/dist/generator/deep-relative-emitters.d.ts.map +1 -1
  56. package/dist/generator/deep-relative-emitters.js +4 -0
  57. package/dist/generator/deep-relative-emitters.js.map +1 -1
  58. package/dist/generator/depcruise-exempt.d.ts +5 -0
  59. package/dist/generator/depcruise-exempt.d.ts.map +1 -0
  60. package/dist/generator/depcruise-exempt.js +8 -0
  61. package/dist/generator/depcruise-exempt.js.map +1 -0
  62. package/dist/generator/dependency-internals-emitters.d.ts +1 -1
  63. package/dist/generator/dependency-internals-emitters.d.ts.map +1 -1
  64. package/dist/generator/dependency-internals-emitters.js +5 -2
  65. package/dist/generator/dependency-internals-emitters.js.map +1 -1
  66. package/dist/generator/env-access-emitters.d.ts +1 -1
  67. package/dist/generator/env-access-emitters.d.ts.map +1 -1
  68. package/dist/generator/env-access-emitters.js +3 -1
  69. package/dist/generator/env-access-emitters.js.map +1 -1
  70. package/dist/generator/eslint-preset-emitter.d.ts +4 -1
  71. package/dist/generator/eslint-preset-emitter.d.ts.map +1 -1
  72. package/dist/generator/eslint-preset-emitter.js +6 -4
  73. package/dist/generator/eslint-preset-emitter.js.map +1 -1
  74. package/dist/generator/eslint-scope.d.ts +10 -0
  75. package/dist/generator/eslint-scope.d.ts.map +1 -0
  76. package/dist/generator/eslint-scope.js +37 -0
  77. package/dist/generator/eslint-scope.js.map +1 -0
  78. package/dist/generator/phantom-dependency-emitters.d.ts +1 -1
  79. package/dist/generator/phantom-dependency-emitters.d.ts.map +1 -1
  80. package/dist/generator/phantom-dependency-emitters.js +4 -1
  81. package/dist/generator/phantom-dependency-emitters.js.map +1 -1
  82. package/dist/generator/public-api-emitters.d.ts +1 -1
  83. package/dist/generator/public-api-emitters.d.ts.map +1 -1
  84. package/dist/generator/public-api-emitters.js +2 -1
  85. package/dist/generator/public-api-emitters.js.map +1 -1
  86. package/dist/generator/test-isolation-emitters.d.ts +3 -1
  87. package/dist/generator/test-isolation-emitters.d.ts.map +1 -1
  88. package/dist/generator/test-isolation-emitters.js +26 -2
  89. package/dist/generator/test-isolation-emitters.js.map +1 -1
  90. package/dist/generator/workspace-package-emitters.d.ts +1 -1
  91. package/dist/generator/workspace-package-emitters.d.ts.map +1 -1
  92. package/dist/generator/workspace-package-emitters.js +2 -0
  93. package/dist/generator/workspace-package-emitters.js.map +1 -1
  94. package/dist/index.d.ts +2 -1
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +2 -1
  97. package/dist/index.js.map +1 -1
  98. package/dist/scanner/enforcers.d.ts +8 -0
  99. package/dist/scanner/enforcers.d.ts.map +1 -0
  100. package/dist/scanner/enforcers.js +74 -0
  101. package/dist/scanner/enforcers.js.map +1 -0
  102. package/package.json +8 -8
  103. package/dist/cli/init.d.ts +0 -21
  104. package/dist/cli/init.d.ts.map +0 -1
  105. package/dist/cli/init.js +0 -19
  106. package/dist/cli/init.js.map +0 -1
@@ -1,17 +1,23 @@
1
1
  import { existsSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
2
  import * as path from 'node:path';
3
- import { fileURLToPath } from 'node:url';
3
+ import { fileURLToPath, pathToFileURL } from 'node:url';
4
4
  import { Command } from 'commander';
5
5
  import { checkSelfConsistency } from '../detector/self-consistency.js';
6
6
  import { discoverAppDirs } from '../scanner/app-dirs.js';
7
+ import { detectEnforcers } from '../scanner/enforcers.js';
7
8
  import { hasTsConfig, scanRepo } from './scan.js';
8
- import { renderExplain, renderInit, renderReport, renderRecommendations } from './report.js';
9
+ import { renderAdoptionBody, renderExplain, renderInit, renderReport, renderRecommendations, } from './report.js';
9
10
  import { buildRecommendations, detectStack } from './recommend.js';
10
11
  import { toScanSummary } from './summary.js';
11
- import { emitOne, regenerateConfigs } from './generate.js';
12
- import { buildInitManifest, INIT_MANIFEST_FILE, writeInitManifest } from './init.js';
12
+ import { ARCHPRINT_DIR, ESLINT_FILE, FAMILY_NAMES, emitOne } from './generate.js';
13
+ import { writeLayout } from './layout.js';
14
+ import { CONFIG_FILE, readConfig, recordManagedFiles } from './archprint-config.js';
15
+ import { stripAdoptionSection } from './adoption-readme.js';
16
+ import { removeIgnoreEntry } from './ignore-file.js';
13
17
  import { OUTPUTS_MANIFEST_FILE, readOutputs, removeIfEmpty } from './outputs-manifest.js';
18
+ import { LEGACY_DIR, hasLegacyLayout, runMigration } from './migrate.js';
14
19
  import { WIRING_TOOLS } from './wiring.js';
20
+ const LEGACY_ROOT_CONFIG = 'archprint.json';
15
21
  export function readVersion() {
16
22
  const here = path.dirname(fileURLToPath(import.meta.url));
17
23
  return JSON.parse(readFileSync(path.join(here, '..', '..', 'package.json'), 'utf8')).version;
@@ -34,6 +40,79 @@ function countStructuralAuto(scan) {
34
40
  return (groups.reduce((n, g) => n + g.filter((x) => x.gate.status === 'AUTO').length, 0) +
35
41
  singles.filter((s) => s.gate.status === 'AUTO').length);
36
42
  }
43
+ const EMIT_TARGETS = ['eslint', 'dependency-cruiser', 'all'];
44
+ function applyEmitOverride(detected, emit) {
45
+ switch (emit) {
46
+ case 'eslint':
47
+ return { ...detected, eslint: true, dependencyCruiser: false };
48
+ case 'dependency-cruiser':
49
+ return { ...detected, eslint: false, dependencyCruiser: true };
50
+ case 'all':
51
+ return { ...detected, eslint: true, dependencyCruiser: true };
52
+ default:
53
+ return detected;
54
+ }
55
+ }
56
+ export async function runEslintCheck(appDir, outDir) {
57
+ const rulesFile = path.join(outDir, ESLINT_FILE);
58
+ if (!existsSync(rulesFile)) {
59
+ console.log('Check: no eslint rules were generated to check.');
60
+ return;
61
+ }
62
+ const [{ ESLint }, tseslint, generated] = await Promise.all([
63
+ import('eslint'),
64
+ import('typescript-eslint'),
65
+ import(pathToFileURL(rulesFile).href),
66
+ ]);
67
+ const archprintRuleIds = new Set();
68
+ for (const block of generated.default) {
69
+ const rules = block.rules;
70
+ if (rules)
71
+ for (const id of Object.keys(rules))
72
+ archprintRuleIds.add(id);
73
+ }
74
+ const config = [
75
+ { files: ['**/*.{ts,tsx}'], languageOptions: { parser: tseslint.default.parser } },
76
+ ...generated.default,
77
+ ];
78
+ const eslint = new ESLint({
79
+ cwd: appDir,
80
+ overrideConfigFile: true,
81
+ overrideConfig: config,
82
+ });
83
+ let results;
84
+ /* v8 ignore start -- defensive: eslint throws only on an unresolved rule (e.g. an unregistered plugin) */
85
+ try {
86
+ results = await eslint.lintFiles(['**/*.{ts,tsx}']);
87
+ }
88
+ catch (error) {
89
+ console.log(`Check: could not run eslint (${error.message}).`);
90
+ process.exitCode = 1;
91
+ return;
92
+ }
93
+ /* v8 ignore stop */
94
+ const offends = (message) => message.severity === 2 && message.ruleId !== null && archprintRuleIds.has(message.ruleId);
95
+ const offenders = results.filter((result) => result.messages.some(offends));
96
+ const count = offenders.reduce((total, r) => total + r.messages.filter(offends).length, 0);
97
+ const unparsed = results.filter((result) => result.messages.some((m) => m.fatal));
98
+ if (unparsed.length > 0) {
99
+ console.log(`Check: ${unparsed.length} file(s) could not be parsed, so they were not checked:`);
100
+ for (const result of unparsed.slice(0, 10))
101
+ console.log(` ${path.relative(appDir, result.filePath)}`);
102
+ process.exitCode = 1;
103
+ }
104
+ if (count === 0) {
105
+ if (unparsed.length === 0)
106
+ console.log('Check: the generated eslint rules pass clean on this repo.');
107
+ return;
108
+ }
109
+ console.log(`Check: ${count} violation(s) of the generated rules:`);
110
+ for (const result of offenders.slice(0, 10)) {
111
+ const rules = [...new Set(result.messages.filter(offends).map((m) => m.ruleId))];
112
+ console.log(` ${path.relative(appDir, result.filePath)}: ${rules.join(', ')}`);
113
+ }
114
+ process.exitCode = 1;
115
+ }
37
116
  function resolveApp(input) {
38
117
  const appDir = path.resolve(input);
39
118
  if (hasTsConfig(appDir))
@@ -69,15 +148,22 @@ export function buildProgram(version = readVersion()) {
69
148
  .command('init')
70
149
  .description('Set up archprint for this repo: detect the stack, enforce the rules your code already follows, and record what to adopt next')
71
150
  .argument('[path]', 'app directory', '.')
72
- .option('-o, --out <dir>', 'output directory for rule configs', 'archprint-rules')
151
+ .option('-o, --out <dir>', 'output directory for the generated rules', ARCHPRINT_DIR)
73
152
  .option('--fast', 'skip barrel/alias resolution (faster, less accurate)')
74
153
  .option('--include-structural', 'also enforce the structural-inference families (held for review by default)')
75
- .option('--force', `overwrite an existing ${INIT_MANIFEST_FILE} and rule configs`)
154
+ .option('--expand', 'also write the per-family files, rule cards, and fixtures')
155
+ .option('--force', `overwrite an existing ${ARCHPRINT_DIR}/${CONFIG_FILE} and rules`)
76
156
  .action((input, options) => {
77
157
  const appDir = resolveApp(input);
78
- const manifestPath = path.resolve(INIT_MANIFEST_FILE);
79
- if (existsSync(manifestPath) && !options.force) {
80
- console.error(`${INIT_MANIFEST_FILE} already exists. Re-run with --force to overwrite, or use 'archprint scan' / 'archprint generate' directly.`);
158
+ const cwd = process.cwd();
159
+ if (hasLegacyLayout(cwd)) {
160
+ console.error(`Found an older archprint layout (${LEGACY_DIR}/). Run 'archprint migrate' to upgrade it first.`);
161
+ process.exitCode = 1;
162
+ return;
163
+ }
164
+ const outDir = path.resolve(options.out);
165
+ if (readConfig(outDir) !== null && !options.force) {
166
+ console.error(`${path.join(options.out, CONFIG_FILE)} already exists. Re-run with --force to overwrite, or use 'archprint generate' directly.`);
81
167
  process.exitCode = 1;
82
168
  return;
83
169
  }
@@ -92,18 +178,24 @@ export function buildProgram(version = readVersion()) {
92
178
  return;
93
179
  }
94
180
  /* v8 ignore stop */
95
- const outDir = path.resolve(options.out);
96
181
  const structural = options.includeStructural ?? false;
97
- const { configs } = regenerateConfigs(scan, outDir, { structural, version });
98
- const writtenCount = configs.reduce((n, config) => n + config.files.length, 0);
99
- const recommendations = buildRecommendations(scan, detectStack(appDir));
100
- const cwd = process.cwd();
101
- const manifest = buildInitManifest(recommendations, version, {
182
+ const enforcers = detectEnforcers(scan.appDir);
183
+ const recommendations = buildRecommendations(scan, detectStack(appDir), enforcers);
184
+ const { files } = writeLayout(scan, outDir, {
185
+ structural,
186
+ enforcers,
187
+ expand: options.expand,
188
+ version,
189
+ recommendations,
102
190
  app: displayPath(appDir, cwd),
103
- rulesDir: displayPath(outDir, cwd),
191
+ cwd,
192
+ readmeBody: renderAdoptionBody(recommendations),
104
193
  });
105
- writeInitManifest(manifest, manifestPath);
106
- console.log(renderInit(manifest, writtenCount, structural, version));
194
+ const config = readConfig(outDir);
195
+ /* v8 ignore next -- writeLayout always writes a readable config */
196
+ if (config === null)
197
+ return;
198
+ console.log(renderInit(config, files.length, structural, version));
107
199
  if (options.fast) {
108
200
  console.log('\nWarning: rules came from a fast specifier-level scan; re-run without --fast before enforcing.');
109
201
  }
@@ -142,17 +234,43 @@ export function buildProgram(version = readVersion()) {
142
234
  });
143
235
  program
144
236
  .command('generate')
145
- .description('Write the four rule artifacts for every AUTO pattern (resolves the graph by default)')
237
+ .description('Write the archprint rules for every AUTO pattern (resolves the graph by default)')
146
238
  .argument('[path]', 'app directory', '.')
147
- .option('-o, --out <dir>', 'output directory', 'archprint-rules')
239
+ .option('-o, --out <dir>', 'output directory', ARCHPRINT_DIR)
148
240
  .option('--fast', 'skip barrel/alias resolution (faster, may mint a rule the full graph rejects)')
149
241
  .option('--include-structural', 'also emit the structural-inference families (layer, role, entry-purity, ui/data, server/client, feature-slice, app-isolation, stories, env, workspace-package) as AUTO. Held for review by default: the Phase A audit found their inferred layers/roles can be wrong; review before enforcing.')
150
242
  .option('--rule <id>', 'emit a single rule by id (e.g. AP-001) after reviewing its evidence with `explain`, including a SUGGEST rule')
151
- .action((input, options) => {
243
+ .option('--emit <target>', 'force the output format regardless of detected tooling: eslint, dependency-cruiser, or all')
244
+ .option('--no-graph', 'skip the layer dependency graph (Mermaid and Graphviz, with --expand)')
245
+ .option('--expand', 'also write the per-family files, rule cards, fixtures, and graph')
246
+ .option('--readme', 'also add an archprint section to README.md summarizing what is enforced')
247
+ .option('--only <family>', `emit only one rule family (${FAMILY_NAMES.join(', ')})`)
248
+ .option('--rules <ids>', 'emit only these forbidden-import rule ids (comma-separated, e.g. AP-001,AP-002)')
249
+ .option('--check', 'after generating, run the eslint rules against the repo and report pass/fail')
250
+ .action(async (input, options) => {
251
+ if (options.emit !== undefined && !EMIT_TARGETS.includes(options.emit)) {
252
+ console.error(`Invalid --emit target '${options.emit}'. Use: ${EMIT_TARGETS.join(', ')}.`);
253
+ process.exitCode = 1;
254
+ return;
255
+ }
256
+ if (options.only !== undefined &&
257
+ !FAMILY_NAMES.includes(options.only)) {
258
+ console.error(`Invalid --only family '${options.only}'. Use one of: ${FAMILY_NAMES.join(', ')}.`);
259
+ process.exitCode = 1;
260
+ return;
261
+ }
262
+ if (hasLegacyLayout(process.cwd())) {
263
+ console.error(`Found an older archprint layout (${LEGACY_DIR}/). Run 'archprint migrate' to upgrade it first.`);
264
+ process.exitCode = 1;
265
+ return;
266
+ }
152
267
  if (options.rule !== undefined) {
268
+ const cwd = process.cwd();
269
+ const outDir = path.resolve(options.out);
153
270
  const { appDir, pattern } = findPattern(input, options.rule, !options.fast);
154
- const dir = emitOne(pattern, appDir, path.resolve(options.out));
155
- console.log(`generated ${path.relative(process.cwd(), dir)}/`);
271
+ const dir = emitOne(pattern, appDir, outDir);
272
+ recordManagedFiles(outDir, cwd, version, [dir]);
273
+ console.log(`generated ${path.relative(cwd, dir)}/`);
156
274
  if (options.fast) {
157
275
  console.log('Warning: generated from a fast specifier-level scan; re-run without --fast to confirm no barrel/alias-hidden violations before enforcing.');
158
276
  }
@@ -169,14 +287,35 @@ export function buildProgram(version = readVersion()) {
169
287
  return;
170
288
  }
171
289
  /* v8 ignore stop */
290
+ const cwd = process.cwd();
172
291
  const outDir = path.resolve(options.out);
173
292
  const structural = options.includeStructural ?? false;
174
293
  const heldStructuralAuto = structural ? 0 : countStructuralAuto(scan);
175
- const { configs, removed } = regenerateConfigs(scan, outDir, { structural, version });
294
+ const enforcers = applyEmitOverride(detectEnforcers(scan.appDir), options.emit);
295
+ const recommendations = buildRecommendations(scan, detectStack(scan.appDir), enforcers);
296
+ const ruleIds = options.rules
297
+ ? options.rules
298
+ .split(',')
299
+ .map((id) => id.trim())
300
+ .filter(Boolean)
301
+ : undefined;
302
+ const { files, removed } = writeLayout(scan, outDir, {
303
+ structural,
304
+ enforcers,
305
+ graph: options.graph,
306
+ expand: options.expand,
307
+ only: options.only,
308
+ ruleIds,
309
+ version,
310
+ recommendations,
311
+ app: displayPath(scan.appDir, cwd),
312
+ cwd,
313
+ readmeBody: options.readme ? renderAdoptionBody(recommendations) : undefined,
314
+ });
176
315
  if (removed.length > 0) {
177
316
  console.log(`Refreshed: removed ${removed.length} stale archprint output(s) before writing.`);
178
317
  }
179
- if (configs.length === 0) {
318
+ if (files.length === 0) {
180
319
  if (heldStructuralAuto > 0) {
181
320
  console.log(`No mechanical AUTO rules to generate. ${heldStructuralAuto} structural rule(s) are held for review; pass --include-structural to emit them (review before enforcing).`);
182
321
  }
@@ -185,15 +324,9 @@ export function buildProgram(version = readVersion()) {
185
324
  }
186
325
  return;
187
326
  }
188
- const report = (target, suffix = '') => {
189
- const relative = path.relative(process.cwd(), target);
190
- console.log(`generated ${relative.startsWith('..') ? target : relative}${suffix}`);
191
- };
192
- for (const config of configs) {
193
- for (const file of config.files)
194
- report(file, config.label === null ? '/' : '');
195
- if (config.label !== null)
196
- console.log(` (${config.label})`);
327
+ for (const file of files) {
328
+ const relative = path.relative(cwd, file);
329
+ console.log(`generated ${relative.startsWith('..') ? file : relative}`);
197
330
  }
198
331
  if (heldStructuralAuto > 0) {
199
332
  console.log(`Held ${heldStructuralAuto} structural rule(s) for review (layer / role / entry-purity / ui-data / server-client / ...): their inferred layers/roles can be wrong. Review with 'archprint scan', then pass --include-structural to emit them.`);
@@ -201,6 +334,8 @@ export function buildProgram(version = readVersion()) {
201
334
  if (options.fast) {
202
335
  console.log('Warning: generated from a fast specifier-level scan; re-run without --fast to confirm no barrel/alias-hidden violations before enforcing.');
203
336
  }
337
+ if (options.check)
338
+ await runEslintCheck(scan.appDir, outDir);
204
339
  });
205
340
  program
206
341
  .command('recommend')
@@ -213,7 +348,7 @@ export function buildProgram(version = readVersion()) {
213
348
  if (appDirs.length === 0) {
214
349
  throw new Error(`No tsconfig.json found under ${root}. Point archprint at an app directory (a directory with a tsconfig.json); a monorepo root is fine.`);
215
350
  }
216
- const recommendFor = (appDir) => buildRecommendations(scanRepo(appDir, { deep: false }), detectStack(appDir));
351
+ const recommendFor = (appDir) => buildRecommendations(scanRepo(appDir, { deep: false }), detectStack(appDir), detectEnforcers(appDir));
217
352
  if (options.json) {
218
353
  const apps = appDirs.map((appDir) => ({
219
354
  app: displayPath(appDir, root),
@@ -241,7 +376,7 @@ export function buildProgram(version = readVersion()) {
241
376
  program
242
377
  .command('wire')
243
378
  .description("Reference archprint's generated rules from the enforcement tools your repo uses (managed, reversible)")
244
- .option('-o, --out <dir>', 'output directory that holds the generated rule configs', 'archprint-rules')
379
+ .option('-o, --out <dir>', 'output directory that holds the generated rules', ARCHPRINT_DIR)
245
380
  .option('--dry-run', 'show what would change without writing')
246
381
  .action((options) => {
247
382
  const cwd = process.cwd();
@@ -286,26 +421,37 @@ export function buildProgram(version = readVersion()) {
286
421
  });
287
422
  program
288
423
  .command('eject')
289
- .description("Remove archprint's generated files, its config manifest, and any wired references")
290
- .option('-o, --out <dir>', 'output directory that holds the generated rule configs', 'archprint-rules')
424
+ .description("Remove archprint's generated files, its config, and any wired references")
425
+ .option('-o, --out <dir>', 'output directory that holds the generated rules', ARCHPRINT_DIR)
291
426
  .option('--dry-run', 'list what would be removed without deleting anything')
292
427
  .action((options) => {
293
428
  const cwd = process.cwd();
294
429
  const outDir = path.resolve(options.out);
430
+ const config = readConfig(outDir);
295
431
  const targets = [];
296
- for (const relative of readOutputs(outDir)) {
297
- const target = path.join(outDir, relative);
298
- if (existsSync(target))
299
- targets.push(target);
432
+ const add = (file) => {
433
+ if (existsSync(file) && !targets.includes(file))
434
+ targets.push(file);
435
+ };
436
+ if (config)
437
+ for (const relative of config.managed.files)
438
+ add(path.resolve(cwd, relative));
439
+ for (const relative of readOutputs(outDir))
440
+ add(path.join(outDir, relative));
441
+ add(path.join(outDir, OUTPUTS_MANIFEST_FILE));
442
+ add(path.join(outDir, CONFIG_FILE));
443
+ add(path.resolve(cwd, LEGACY_ROOT_CONFIG));
444
+ const legacyDir = path.resolve(cwd, LEGACY_DIR);
445
+ if (legacyDir !== outDir) {
446
+ for (const relative of readOutputs(legacyDir))
447
+ add(path.join(legacyDir, relative));
448
+ add(path.join(legacyDir, OUTPUTS_MANIFEST_FILE));
449
+ add(legacyDir);
300
450
  }
301
- const outputsManifest = path.join(outDir, OUTPUTS_MANIFEST_FILE);
302
- if (existsSync(outputsManifest))
303
- targets.push(outputsManifest);
304
- const initManifest = path.resolve(INIT_MANIFEST_FILE);
305
- if (existsSync(initManifest))
306
- targets.push(initManifest);
307
451
  const wired = WIRING_TOOLS.map((tool) => ({ tool, configPath: tool.findConfig(cwd) })).filter((entry) => entry.configPath !== null && entry.tool.isWired(readFileSync(entry.configPath, 'utf8')));
308
- if (targets.length === 0 && wired.length === 0) {
452
+ const readmePath = path.join(cwd, 'README.md');
453
+ const stripReadme = config?.managed.readme === true;
454
+ if (targets.length === 0 && wired.length === 0 && !stripReadme) {
309
455
  console.log('Nothing to eject: no archprint outputs found here.');
310
456
  return;
311
457
  }
@@ -315,19 +461,59 @@ export function buildProgram(version = readVersion()) {
315
461
  console.log(` ${displayPath(target)}`);
316
462
  for (const { configPath } of wired)
317
463
  console.log(` unwire ${displayPath(configPath)}`);
464
+ if (stripReadme)
465
+ console.log(` strip archprint section from ${displayPath(readmePath)}`);
318
466
  return;
319
467
  }
468
+ for (const { tool, configPath } of wired)
469
+ writeFileSync(configPath, tool.remove(readFileSync(configPath, 'utf8')));
320
470
  for (const target of targets)
321
471
  rmSync(target, { recursive: true, force: true });
322
472
  removeIfEmpty(outDir);
323
- for (const { tool, configPath } of wired)
324
- writeFileSync(configPath, tool.remove(readFileSync(configPath, 'utf8')));
473
+ if (stripReadme)
474
+ stripAdoptionSection(readmePath, config.managed.readmeCreated);
475
+ if (config?.managed.prettierignore)
476
+ removeIgnoreEntry(path.join(cwd, '.prettierignore'), {
477
+ deleteIfEmpty: config.managed.prettierignoreCreated,
478
+ });
479
+ if (config?.managed.npmignore)
480
+ removeIgnoreEntry(path.join(cwd, '.npmignore'), {
481
+ deleteIfEmpty: config.managed.npmignoreCreated,
482
+ });
325
483
  console.log(`Ejected ${targets.length + wired.length} archprint artifact(s):`);
326
484
  for (const target of targets)
327
485
  console.log(` removed ${displayPath(target)}`);
328
486
  for (const { configPath } of wired)
329
487
  console.log(` unwired ${displayPath(configPath)}`);
330
488
  });
489
+ program
490
+ .command('migrate')
491
+ .alias('upgrade')
492
+ .description('Migrate an older archprint setup (archprint-rules/) to the current .archprint layout. Run after updating the package.')
493
+ .option('--dry-run', 'show what would change without writing')
494
+ .action((options) => {
495
+ const result = runMigration(process.cwd(), version, { dryRun: options.dryRun });
496
+ if (result.status === 'nothing') {
497
+ console.log('Nothing to migrate: no older archprint layout found here.');
498
+ return;
499
+ }
500
+ if (result.status === 'aborted') {
501
+ console.error(`Migration stopped, nothing changed. ${result.reason}`);
502
+ process.exitCode = 1;
503
+ return;
504
+ }
505
+ console.log(options.dryRun
506
+ ? 'Would migrate to the .archprint layout:'
507
+ : 'Migrated to the .archprint layout:');
508
+ for (const file of result.written)
509
+ console.log(` ${options.dryRun ? 'write' : 'wrote'} ${file}`);
510
+ for (const edit of result.edited)
511
+ console.log(` ${options.dryRun ? 'rewire' : 'rewired'} ${edit}`);
512
+ for (const target of result.removed)
513
+ console.log(` ${options.dryRun ? 'remove' : 'removed'} ${target}`);
514
+ if (!options.dryRun)
515
+ console.log("Run 'archprint eject' to undo.");
516
+ });
331
517
  return program;
332
518
  }
333
519
  //# sourceMappingURL=program.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
+ import { type FamilyKey } from '../detector/family-maturity.js';
2
+ import type { InstalledEnforcers } from '../scanner/enforcers.js';
1
3
  import type { ScanResult } from './scan.js';
4
+ export declare function resolveEnforcer(key: FamilyKey, enforcers: InstalledEnforcers): string;
2
5
  export declare function detectStack(appDir: string): Set<string>;
3
6
  export interface Recommendation {
4
7
  title: string;
5
8
  rate: number | null;
9
+ enforcer: string;
6
10
  }
7
11
  export interface Recommendations {
8
12
  stack: string[];
@@ -14,5 +18,5 @@ export interface Recommendations {
14
18
  review: Recommendation[];
15
19
  adopt: Recommendation[];
16
20
  }
17
- export declare function buildRecommendations(scan: ScanResult, stack: ReadonlySet<string>): Recommendations;
21
+ export declare function buildRecommendations(scan: ScanResult, stack: ReadonlySet<string>, enforcers: InstalledEnforcers): Recommendations;
18
22
  //# sourceMappingURL=recommend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../src/cli/recommend.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAoI5C,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAqBvD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAaD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,eAAe,CAuBjB"}
1
+ {"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../src/cli/recommend.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA2B5C,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAarF;AAoID,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAqBvD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAaD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,SAAS,EAAE,kBAAkB,GAC5B,eAAe,CA2BjB"}
@@ -3,6 +3,42 @@ import * as path from 'node:path';
3
3
  import { ADOPTION_CATALOG } from '../data/adoption-catalog.js';
4
4
  import { isStableFamily } from '../detector/family-maturity.js';
5
5
  import { buildWorkspacePackageMap, findWorkspaceRoot } from '../scanner/workspace-packages.js';
6
+ const FAMILY_TOOL = {
7
+ 'forbidden-imports': 'eslint',
8
+ 'import-style': 'eslint',
9
+ 'console-isolation': 'eslint',
10
+ 'env-access': 'eslint',
11
+ 'workspace-package-api': 'eslint',
12
+ 'test-isolation': 'eslint-or-depcruise',
13
+ 'phantom-deps': 'dependency-cruiser',
14
+ 'dependency-hygiene': 'dependency-cruiser',
15
+ layer: 'dependency-cruiser',
16
+ 'role-layering': 'dependency-cruiser',
17
+ 'public-api': 'dependency-cruiser',
18
+ 'feature-slice': 'dependency-cruiser',
19
+ 'app-isolation': 'dependency-cruiser',
20
+ 'entry-purity': 'dependency-cruiser',
21
+ 'stories-isolation': 'dependency-cruiser',
22
+ 'ui-data': 'dependency-cruiser',
23
+ 'server-client': 'dependency-cruiser',
24
+ cycles: 'none',
25
+ orphans: 'none',
26
+ reachability: 'none',
27
+ };
28
+ export function resolveEnforcer(key, enforcers) {
29
+ const depcruise = enforcers.dependencyCruiser;
30
+ const eslint = enforcers.eslint || !enforcers.dependencyCruiser;
31
+ switch (FAMILY_TOOL[key]) {
32
+ case 'none':
33
+ return '';
34
+ case 'eslint':
35
+ return eslint ? 'eslint' : 'needs eslint';
36
+ case 'dependency-cruiser':
37
+ return depcruise ? 'dependency-cruiser' : 'needs dependency-cruiser';
38
+ case 'eslint-or-depcruise':
39
+ return eslint ? 'eslint' : 'dependency-cruiser';
40
+ }
41
+ }
6
42
  const ADOPT_THRESHOLD = 15;
7
43
  const groupsStatus = (groups) => {
8
44
  if (groups.some((g) => g.gate.status === 'AUTO'))
@@ -166,13 +202,17 @@ function adoptionRate(title, stack) {
166
202
  }
167
203
  return best;
168
204
  }
169
- export function buildRecommendations(scan, stack) {
205
+ export function buildRecommendations(scan, stack, enforcers) {
170
206
  const enforceNow = [];
171
207
  const review = [];
172
208
  const adopt = [];
173
209
  for (const family of FAMILIES) {
174
210
  const status = family.status(scan);
175
- const entry = { title: family.title, rate: adoptionRate(family.title, stack) };
211
+ const entry = {
212
+ title: family.title,
213
+ rate: adoptionRate(family.title, stack),
214
+ enforcer: resolveEnforcer(family.key, enforcers),
215
+ };
176
216
  if (status === 'AUTO' && isStableFamily(family.key))
177
217
  enforceNow.push(entry);
178
218
  else if (status === 'AUTO' || status === 'SUGGEST')
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../src/cli/recommend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../src/cli/recommend.ts"],"names":[],"mappings":"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"}