@evolith/smart-cli 1.1.2 → 1.1.4
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/dist/.tsbuildinfo +1 -0
- package/dist/app.module.d.ts +2 -0
- package/dist/app.module.js +134 -0
- package/dist/app.module.js.map +1 -0
- package/dist/commands/adr/adr.command.d.ts +34 -0
- package/dist/commands/adr/adr.command.js +351 -0
- package/dist/commands/adr/adr.command.js.map +1 -0
- package/dist/commands/agents/agents.command.d.ts +14 -0
- package/dist/commands/agents/agents.command.js +61 -0
- package/dist/commands/agents/agents.command.js.map +1 -0
- package/dist/commands/agents/index.d.ts +1 -0
- package/dist/commands/agents/index.js +6 -0
- package/dist/commands/agents/index.js.map +1 -0
- package/dist/commands/alias/alias.command.d.ts +16 -0
- package/dist/commands/alias/alias.command.js +95 -0
- package/dist/commands/alias/alias.command.js.map +1 -0
- package/dist/commands/api/api.catalog.d.ts +38 -0
- package/dist/commands/api/api.catalog.js +167 -0
- package/dist/commands/api/api.catalog.js.map +1 -0
- package/dist/commands/api/api.command.d.ts +21 -0
- package/dist/commands/api/api.command.js +162 -0
- package/dist/commands/api/api.command.js.map +1 -0
- package/dist/commands/architecture/scaffold/index.d.ts +2 -0
- package/dist/commands/architecture/scaffold/index.js +6 -0
- package/dist/commands/architecture/scaffold/index.js.map +1 -0
- package/dist/commands/architecture/scaffold/scaffold-strategy.d.ts +15 -0
- package/dist/commands/architecture/scaffold/scaffold-strategy.js +20 -0
- package/dist/commands/architecture/scaffold/scaffold-strategy.js.map +1 -0
- package/dist/commands/architecture/scaffold.command.d.ts +16 -0
- package/dist/commands/architecture/scaffold.command.js +328 -0
- package/dist/commands/architecture/scaffold.command.js.map +1 -0
- package/dist/commands/completion/completion.command.d.ts +28 -0
- package/dist/commands/completion/completion.command.js +321 -0
- package/dist/commands/completion/completion.command.js.map +1 -0
- package/dist/commands/docs/docs.command.d.ts +17 -0
- package/dist/commands/docs/docs.command.js +292 -0
- package/dist/commands/docs/docs.command.js.map +1 -0
- package/dist/commands/drift/drift.command.d.ts +28 -0
- package/dist/commands/drift/drift.command.js +292 -0
- package/dist/commands/drift/drift.command.js.map +1 -0
- package/dist/commands/fixtures/fixtures.command.d.ts +21 -0
- package/dist/commands/fixtures/fixtures.command.js +310 -0
- package/dist/commands/fixtures/fixtures.command.js.map +1 -0
- package/dist/commands/gate/gate.command.d.ts +29 -0
- package/dist/commands/gate/gate.command.js +193 -0
- package/dist/commands/gate/gate.command.js.map +1 -0
- package/dist/commands/history/history.command.d.ts +29 -0
- package/dist/commands/history/history.command.js +237 -0
- package/dist/commands/history/history.command.js.map +1 -0
- package/dist/commands/init/agents.command.d.ts +24 -0
- package/dist/commands/init/agents.command.js +330 -0
- package/dist/commands/init/agents.command.js.map +1 -0
- package/dist/commands/init/init.command.d.ts +26 -0
- package/dist/commands/init/init.command.js +170 -0
- package/dist/commands/init/init.command.js.map +1 -0
- package/dist/commands/init/init.wizard.d.ts +19 -0
- package/dist/commands/init/init.wizard.js +181 -0
- package/dist/commands/init/init.wizard.js.map +1 -0
- package/dist/commands/init/upgrade.command.d.ts +22 -0
- package/dist/commands/init/upgrade.command.js +178 -0
- package/dist/commands/init/upgrade.command.js.map +1 -0
- package/dist/commands/mcp/mcp-serve.command.d.ts +17 -0
- package/dist/commands/mcp/mcp-serve.command.js +153 -0
- package/dist/commands/mcp/mcp-serve.command.js.map +1 -0
- package/dist/commands/phase/phase-advance.command.d.ts +30 -0
- package/dist/commands/phase/phase-advance.command.js +206 -0
- package/dist/commands/phase/phase-advance.command.js.map +1 -0
- package/dist/commands/profile/profile.command.d.ts +18 -0
- package/dist/commands/profile/profile.command.js +198 -0
- package/dist/commands/profile/profile.command.js.map +1 -0
- package/dist/commands/sdlc/gate-status.command.d.ts +10 -0
- package/dist/commands/sdlc/gate-status.command.js +162 -0
- package/dist/commands/sdlc/gate-status.command.js.map +1 -0
- package/dist/commands/sdlc/generate-domain.command.d.ts +8 -0
- package/dist/commands/sdlc/generate-domain.command.js +165 -0
- package/dist/commands/sdlc/generate-domain.command.js.map +1 -0
- package/dist/commands/sdlc/handoff.command.d.ts +27 -0
- package/dist/commands/sdlc/handoff.command.js +275 -0
- package/dist/commands/sdlc/handoff.command.js.map +1 -0
- package/dist/commands/sdlc/sdlc.command.d.ts +5 -0
- package/dist/commands/sdlc/sdlc.command.js +44 -0
- package/dist/commands/sdlc/sdlc.command.js.map +1 -0
- package/dist/commands/standards/standards.command.d.ts +30 -0
- package/dist/commands/standards/standards.command.js +283 -0
- package/dist/commands/standards/standards.command.js.map +1 -0
- package/dist/commands/update/update.command.d.ts +21 -0
- package/dist/commands/update/update.command.js +214 -0
- package/dist/commands/update/update.command.js.map +1 -0
- package/dist/commands/upgrade/index.d.ts +1 -0
- package/dist/commands/upgrade/index.js +6 -0
- package/dist/commands/upgrade/index.js.map +1 -0
- package/dist/commands/upgrade/upgrade.command.d.ts +14 -0
- package/dist/commands/upgrade/upgrade.command.js +58 -0
- package/dist/commands/upgrade/upgrade.command.js.map +1 -0
- package/dist/commands/validate/validate.command.d.ts +43 -0
- package/dist/commands/validate/validate.command.js +528 -0
- package/dist/commands/validate/validate.command.js.map +1 -0
- package/dist/config/alias.service.d.ts +14 -0
- package/dist/config/alias.service.js +103 -0
- package/dist/config/alias.service.js.map +1 -0
- package/dist/contributions/contribution-validator.d.ts +16 -0
- package/dist/contributions/contribution-validator.js +34 -0
- package/dist/contributions/contribution-validator.js.map +1 -0
- package/dist/contributions/index.d.ts +1 -0
- package/dist/contributions/index.js +6 -0
- package/dist/contributions/index.js.map +1 -0
- package/dist/infrastructure/adapters/agent-registry.service.d.ts +30 -0
- package/dist/infrastructure/adapters/agent-registry.service.js +175 -0
- package/dist/infrastructure/adapters/agent-registry.service.js.map +1 -0
- package/dist/infrastructure/architecture/nx-workspace.strategy.d.ts +19 -0
- package/dist/infrastructure/architecture/nx-workspace.strategy.js +125 -0
- package/dist/infrastructure/architecture/nx-workspace.strategy.js.map +1 -0
- package/dist/infrastructure/architecture/topology-catalog.d.ts +17 -0
- package/dist/infrastructure/architecture/topology-catalog.js +69 -0
- package/dist/infrastructure/architecture/topology-catalog.js.map +1 -0
- package/dist/infrastructure/catalog/catalog-loader.d.ts +21 -0
- package/dist/infrastructure/catalog/catalog-loader.js +144 -0
- package/dist/infrastructure/catalog/catalog-loader.js.map +1 -0
- package/dist/infrastructure/cli/base-command.d.ts +14 -0
- package/dist/infrastructure/cli/base-command.js +41 -0
- package/dist/infrastructure/cli/base-command.js.map +1 -0
- package/dist/infrastructure/cli/command-executor.d.ts +20 -0
- package/dist/infrastructure/cli/command-executor.js +110 -0
- package/dist/infrastructure/cli/command-executor.js.map +1 -0
- package/dist/infrastructure/cli/providers/index.d.ts +52 -0
- package/dist/infrastructure/cli/providers/index.js +175 -0
- package/dist/infrastructure/cli/providers/index.js.map +1 -0
- package/dist/infrastructure/config/config.service.d.ts +34 -0
- package/dist/infrastructure/config/config.service.js +126 -0
- package/dist/infrastructure/config/config.service.js.map +1 -0
- package/dist/infrastructure/filesystem/file-manager.service.d.ts +12 -0
- package/dist/infrastructure/filesystem/file-manager.service.js +79 -0
- package/dist/infrastructure/filesystem/file-manager.service.js.map +1 -0
- package/dist/infrastructure/formatters/output-formatter.service.d.ts +28 -0
- package/dist/infrastructure/formatters/output-formatter.service.js +199 -0
- package/dist/infrastructure/formatters/output-formatter.service.js.map +1 -0
- package/dist/infrastructure/observability/command-watcher.d.ts +45 -0
- package/dist/infrastructure/observability/command-watcher.js +199 -0
- package/dist/infrastructure/observability/command-watcher.js.map +1 -0
- package/dist/infrastructure/observability/error-reporter.d.ts +47 -0
- package/dist/infrastructure/observability/error-reporter.js +163 -0
- package/dist/infrastructure/observability/error-reporter.js.map +1 -0
- package/dist/infrastructure/observability/index.d.ts +11 -0
- package/dist/infrastructure/observability/index.js +31 -0
- package/dist/infrastructure/observability/index.js.map +1 -0
- package/dist/infrastructure/observability/otel-tracing.d.ts +4 -0
- package/dist/infrastructure/observability/otel-tracing.js +34 -0
- package/dist/infrastructure/observability/otel-tracing.js.map +1 -0
- package/dist/infrastructure/observability/structured-logger.d.ts +53 -0
- package/dist/infrastructure/observability/structured-logger.js +123 -0
- package/dist/infrastructure/observability/structured-logger.js.map +1 -0
- package/dist/infrastructure/observability/timing.d.ts +23 -0
- package/dist/infrastructure/observability/timing.js +140 -0
- package/dist/infrastructure/observability/timing.js.map +1 -0
- package/dist/infrastructure/observability/tool-usage-telemetry.service.d.ts +46 -0
- package/dist/infrastructure/observability/tool-usage-telemetry.service.js +181 -0
- package/dist/infrastructure/observability/tool-usage-telemetry.service.js.map +1 -0
- package/dist/infrastructure/plugins/plugin-loader.d.ts +10 -0
- package/dist/infrastructure/plugins/plugin-loader.js +145 -0
- package/dist/infrastructure/plugins/plugin-loader.js.map +1 -0
- package/dist/infrastructure/plugins/plugin.module.d.ts +4 -0
- package/dist/infrastructure/plugins/plugin.module.js +28 -0
- package/dist/infrastructure/plugins/plugin.module.js.map +1 -0
- package/dist/infrastructure/prompts/init-prompt-group.d.ts +3 -0
- package/dist/infrastructure/prompts/init-prompt-group.js +115 -0
- package/dist/infrastructure/prompts/init-prompt-group.js.map +1 -0
- package/dist/infrastructure/prompts/init-prompt-options.d.ts +10 -0
- package/dist/infrastructure/prompts/init-prompt-options.js +40 -0
- package/dist/infrastructure/prompts/init-prompt-options.js.map +1 -0
- package/dist/infrastructure/prompts/progress.service.d.ts +24 -0
- package/dist/infrastructure/prompts/progress.service.js +180 -0
- package/dist/infrastructure/prompts/progress.service.js.map +1 -0
- package/dist/infrastructure/prompts/prompt.service.d.ts +42 -0
- package/dist/infrastructure/prompts/prompt.service.js +142 -0
- package/dist/infrastructure/prompts/prompt.service.js.map +1 -0
- package/dist/infrastructure/prompts/wizard.service.d.ts +27 -0
- package/dist/infrastructure/prompts/wizard.service.js +163 -0
- package/dist/infrastructure/prompts/wizard.service.js.map +1 -0
- package/dist/infrastructure/providers/config-parser.provider.d.ts +15 -0
- package/dist/infrastructure/providers/config-parser.provider.js +68 -0
- package/dist/infrastructure/providers/config-parser.provider.js.map +1 -0
- package/dist/infrastructure/providers/logger.provider.d.ts +10 -0
- package/dist/infrastructure/providers/logger.provider.js +84 -0
- package/dist/infrastructure/providers/logger.provider.js.map +1 -0
- package/dist/infrastructure/providers/mock-filesystem.provider.d.ts +34 -0
- package/dist/infrastructure/providers/mock-filesystem.provider.js +129 -0
- package/dist/infrastructure/providers/mock-filesystem.provider.js.map +1 -0
- package/dist/infrastructure/providers/node-filesystem.provider.d.ts +23 -0
- package/dist/infrastructure/providers/node-filesystem.provider.js +117 -0
- package/dist/infrastructure/providers/node-filesystem.provider.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +27 -0
- package/dist/main.js.map +1 -0
- package/dist/plugins/index.d.ts +1 -0
- package/dist/plugins/index.js +6 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-registry.d.ts +22 -0
- package/dist/plugins/plugin-registry.js +33 -0
- package/dist/plugins/plugin-registry.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.GenerateDomainCommand = void 0;
|
|
49
|
+
const nest_commander_1 = require("nest-commander");
|
|
50
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const fs = __importStar(require("fs-extra"));
|
|
53
|
+
const mermaid_class_parser_1 = require("@evolith/core-domain/application/generators/mermaid-class-parser");
|
|
54
|
+
const hexagonal_scaffolder_1 = require("@evolith/core-domain/application/generators/hexagonal-scaffolder");
|
|
55
|
+
const base_command_1 = require("../../infrastructure/cli/base-command");
|
|
56
|
+
let GenerateDomainCommand = class GenerateDomainCommand extends base_command_1.BaseEvolithCommand {
|
|
57
|
+
constructor() {
|
|
58
|
+
super('GenerateDomainCommand');
|
|
59
|
+
}
|
|
60
|
+
async executeCommand(passedParam, options) {
|
|
61
|
+
const target = passedParam[0];
|
|
62
|
+
const fromFile = options?.from;
|
|
63
|
+
if (!target || !fromFile) {
|
|
64
|
+
this.promptService.showError('Both a generation target and a source file must be specified.');
|
|
65
|
+
this.promptService.showInfo(chalk_1.default.yellow('Example: evolith sdlc generate domain --from ddd-model.md'));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.promptService.showIntro('evolith sdlc generate');
|
|
69
|
+
const modelPath = path.resolve(process.cwd(), fromFile);
|
|
70
|
+
if (!await fs.pathExists(modelPath)) {
|
|
71
|
+
throw new Error(`Model file not found: ${modelPath}`);
|
|
72
|
+
}
|
|
73
|
+
this.promptService.startSpinner('Parsing DDD model…');
|
|
74
|
+
const markdown = await fs.readFile(modelPath, 'utf-8');
|
|
75
|
+
const diagram = (0, mermaid_class_parser_1.parseDddModel)(markdown);
|
|
76
|
+
if (!diagram) {
|
|
77
|
+
this.promptService.stopSpinner('');
|
|
78
|
+
this.promptService.showInfo(chalk_1.default.dim('Make sure the file contains a ```mermaid block with a classDiagram directive.'));
|
|
79
|
+
throw new Error('No valid Mermaid classDiagram found in the model file.');
|
|
80
|
+
}
|
|
81
|
+
this.promptService.stopSpinner(`Found ${chalk_1.default.cyan(diagram.classes.length)} classes and ${chalk_1.default.cyan(diagram.relationships.length)} relationships`);
|
|
82
|
+
this.promptService.showInfo('');
|
|
83
|
+
this.promptService.showInfo(chalk_1.default.bold('Classes detected:'));
|
|
84
|
+
for (const cls of diagram.classes) {
|
|
85
|
+
const stereoLabel = cls.stereotype !== 'unknown'
|
|
86
|
+
? chalk_1.default.cyan(`[${cls.stereotype}]`)
|
|
87
|
+
: chalk_1.default.gray('[unknown]');
|
|
88
|
+
this.promptService.showInfo(` ${stereoLabel} ${chalk_1.default.white(cls.name)}`);
|
|
89
|
+
}
|
|
90
|
+
const targetDir = path.resolve(process.cwd(), options?.output ?? '.');
|
|
91
|
+
const dryRun = options?.dryRun === true;
|
|
92
|
+
if (dryRun) {
|
|
93
|
+
this.promptService.showWarning('Dry-run mode — no files will be written.');
|
|
94
|
+
}
|
|
95
|
+
this.promptService.showInfo('');
|
|
96
|
+
this.promptService.showInfo(`Target directory: ${chalk_1.default.cyan(targetDir)}`);
|
|
97
|
+
this.promptService.startSpinner(dryRun ? 'Calculating files to create…' : 'Scaffolding files…');
|
|
98
|
+
const result = await (0, hexagonal_scaffolder_1.scaffoldHexagonal)(diagram, targetDir, dryRun);
|
|
99
|
+
this.promptService.stopSpinner('Done');
|
|
100
|
+
if (result.created.length > 0) {
|
|
101
|
+
this.promptService.showInfo('');
|
|
102
|
+
this.promptService.showSuccess(`${dryRun ? 'Would create' : 'Created'} ${result.created.length} file(s):`);
|
|
103
|
+
for (const f of result.created) {
|
|
104
|
+
this.promptService.showInfo(` ${chalk_1.default.green('+')} ${f}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (result.skipped.length > 0) {
|
|
108
|
+
this.promptService.showWarning(`Skipped ${result.skipped.length} already-existing file(s):`);
|
|
109
|
+
for (const f of result.skipped) {
|
|
110
|
+
this.promptService.showInfo(` ${chalk_1.default.yellow('·')} ${f}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (result.created.length === 0 && result.skipped.length === 0) {
|
|
114
|
+
this.promptService.showWarning('Nothing to generate — no supported stereotypes found.');
|
|
115
|
+
}
|
|
116
|
+
this.promptService.showOutro(dryRun
|
|
117
|
+
? chalk_1.default.yellow('Dry-run complete. Run without --dry-run to write files.')
|
|
118
|
+
: chalk_1.default.green(`✅ Scaffold complete — ${result.created.length} file(s) created.`));
|
|
119
|
+
}
|
|
120
|
+
parseFrom(val) {
|
|
121
|
+
return val;
|
|
122
|
+
}
|
|
123
|
+
parseOutput(val) {
|
|
124
|
+
return val;
|
|
125
|
+
}
|
|
126
|
+
parseDryRun() {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
exports.GenerateDomainCommand = GenerateDomainCommand;
|
|
131
|
+
__decorate([
|
|
132
|
+
(0, nest_commander_1.Option)({
|
|
133
|
+
flags: '-f, --from <path>',
|
|
134
|
+
description: 'Path to the Markdown DDD model file containing a Mermaid classDiagram',
|
|
135
|
+
}),
|
|
136
|
+
__metadata("design:type", Function),
|
|
137
|
+
__metadata("design:paramtypes", [String]),
|
|
138
|
+
__metadata("design:returntype", String)
|
|
139
|
+
], GenerateDomainCommand.prototype, "parseFrom", null);
|
|
140
|
+
__decorate([
|
|
141
|
+
(0, nest_commander_1.Option)({
|
|
142
|
+
flags: '-o, --output <dir>',
|
|
143
|
+
description: 'Target directory for generated files (default: current working directory)',
|
|
144
|
+
}),
|
|
145
|
+
__metadata("design:type", Function),
|
|
146
|
+
__metadata("design:paramtypes", [String]),
|
|
147
|
+
__metadata("design:returntype", String)
|
|
148
|
+
], GenerateDomainCommand.prototype, "parseOutput", null);
|
|
149
|
+
__decorate([
|
|
150
|
+
(0, nest_commander_1.Option)({
|
|
151
|
+
flags: '--dry-run',
|
|
152
|
+
description: 'Print what would be generated without writing any files',
|
|
153
|
+
}),
|
|
154
|
+
__metadata("design:type", Function),
|
|
155
|
+
__metadata("design:paramtypes", []),
|
|
156
|
+
__metadata("design:returntype", Boolean)
|
|
157
|
+
], GenerateDomainCommand.prototype, "parseDryRun", null);
|
|
158
|
+
exports.GenerateDomainCommand = GenerateDomainCommand = __decorate([
|
|
159
|
+
(0, nest_commander_1.SubCommand)({
|
|
160
|
+
name: 'generate',
|
|
161
|
+
description: 'Generates Hexagonal Architecture scaffold from a Mermaid classDiagram in a Markdown DDD model file',
|
|
162
|
+
}),
|
|
163
|
+
__metadata("design:paramtypes", [])
|
|
164
|
+
], GenerateDomainCommand);
|
|
165
|
+
//# sourceMappingURL=generate-domain.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-domain.command.js","sourceRoot":"","sources":["../../../src/commands/sdlc/generate-domain.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CatalogLoader } from '../../infrastructure/catalog/catalog-loader';
|
|
2
|
+
import { BaseEvolithCommand } from '../../infrastructure/cli/base-command';
|
|
3
|
+
import { IFileSystem } from '@evolith/core-domain/domain/interfaces';
|
|
4
|
+
interface HandoffOptions {
|
|
5
|
+
from?: string;
|
|
6
|
+
to?: string;
|
|
7
|
+
artifacts?: boolean;
|
|
8
|
+
validate?: boolean;
|
|
9
|
+
force?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class HandoffCommand extends BaseEvolithCommand {
|
|
12
|
+
private readonly catalogLoader;
|
|
13
|
+
private readonly fileSystem;
|
|
14
|
+
private readonly phaseService;
|
|
15
|
+
private readonly toolSelectionService;
|
|
16
|
+
constructor(catalogLoader: CatalogLoader, fileSystem: IFileSystem);
|
|
17
|
+
executeCommand(passedParam: string[], options?: HandoffOptions): Promise<void>;
|
|
18
|
+
private getToolGroupsForPhase;
|
|
19
|
+
private getNextSteps;
|
|
20
|
+
private findProjectRoot;
|
|
21
|
+
parseFrom(val: string): string;
|
|
22
|
+
parseTo(val: string): string;
|
|
23
|
+
parseArtifacts(): boolean;
|
|
24
|
+
parseValidate(): boolean;
|
|
25
|
+
parseForce(): boolean;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
45
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
46
|
+
};
|
|
47
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
|
+
};
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.HandoffCommand = void 0;
|
|
52
|
+
const nest_commander_1 = require("nest-commander");
|
|
53
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
54
|
+
const common_1 = require("@nestjs/common");
|
|
55
|
+
const path = __importStar(require("path"));
|
|
56
|
+
const fs = __importStar(require("fs"));
|
|
57
|
+
const catalog_loader_1 = require("../../infrastructure/catalog/catalog-loader");
|
|
58
|
+
const services_1 = require("@evolith/core-domain/domain/services");
|
|
59
|
+
const services_2 = require("@evolith/core-domain/application/services");
|
|
60
|
+
const base_command_1 = require("../../infrastructure/cli/base-command");
|
|
61
|
+
let HandoffCommand = class HandoffCommand extends base_command_1.BaseEvolithCommand {
|
|
62
|
+
constructor(catalogLoader, fileSystem) {
|
|
63
|
+
super('HandoffCommand');
|
|
64
|
+
this.catalogLoader = catalogLoader;
|
|
65
|
+
this.fileSystem = fileSystem;
|
|
66
|
+
this.phaseService = new services_1.PhaseService();
|
|
67
|
+
this.toolSelectionService = new services_1.ToolSelectionService();
|
|
68
|
+
}
|
|
69
|
+
async executeCommand(passedParam, options) {
|
|
70
|
+
const fs = this.fileSystem;
|
|
71
|
+
const projectRoot = this.findProjectRoot(process.cwd());
|
|
72
|
+
if (options?.from && options?.to) {
|
|
73
|
+
const useCase = new services_2.PhaseTransitionUseCase(fs);
|
|
74
|
+
const result = await useCase.execute(options.from, options.to, [], projectRoot);
|
|
75
|
+
if (result.success) {
|
|
76
|
+
this.promptService.showSuccess(`✓ Transitioned from ${options.from} to ${options.to}`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
throw new Error(`Transition failed: ${result.errors.join(', ')}`);
|
|
80
|
+
}
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
console.clear();
|
|
84
|
+
this.promptService.showIntro('Evolith SDLC - Phase Handoff');
|
|
85
|
+
const phases = this.phaseService.getAllPhases();
|
|
86
|
+
const fromPhase = await this.promptService.select({
|
|
87
|
+
message: 'Select current phase:',
|
|
88
|
+
options: phases.map(phase => ({
|
|
89
|
+
value: phase.value,
|
|
90
|
+
label: phase.label,
|
|
91
|
+
hint: phase.description,
|
|
92
|
+
})),
|
|
93
|
+
});
|
|
94
|
+
const currentPhase = this.phaseService.getPhase(fromPhase);
|
|
95
|
+
const nextPhaseInfo = currentPhase ? this.phaseService.getNextPhase(currentPhase.value) : undefined;
|
|
96
|
+
let toPhase = '';
|
|
97
|
+
if (!nextPhaseInfo) {
|
|
98
|
+
toPhase = await this.promptService.select({
|
|
99
|
+
message: 'No next phase available.',
|
|
100
|
+
options: [{ value: '', label: 'N/A' }],
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
toPhase = await this.promptService.select({
|
|
105
|
+
message: 'Select target phase:',
|
|
106
|
+
options: [{
|
|
107
|
+
value: nextPhaseInfo.value,
|
|
108
|
+
label: nextPhaseInfo.label,
|
|
109
|
+
hint: nextPhaseInfo.description,
|
|
110
|
+
}],
|
|
111
|
+
initialValue: nextPhaseInfo.value,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
await this.promptService.confirm('Validate phase gate requirements before handoff?', true);
|
|
115
|
+
await this.promptService.confirm('Generate/upload mandatory evidence artifacts?', true);
|
|
116
|
+
const selectTools = await this.promptService.confirm('Configure tools for target phase?', true);
|
|
117
|
+
const tools = [];
|
|
118
|
+
if (selectTools) {
|
|
119
|
+
const targetPhase = toPhase;
|
|
120
|
+
const toolGroups = this.getToolGroupsForPhase(targetPhase);
|
|
121
|
+
for (const [groupKey, group] of Object.entries(toolGroups)) {
|
|
122
|
+
const useDefault = await this.promptService.confirm(`${group.question} (Default: ${group.defaultOption})`, true);
|
|
123
|
+
if (!useDefault && group.options) {
|
|
124
|
+
const selected = await this.promptService.multiselect({
|
|
125
|
+
message: `Select ${groupKey} tools:`,
|
|
126
|
+
options: group.options.map((o) => ({
|
|
127
|
+
value: o.value,
|
|
128
|
+
label: o.label,
|
|
129
|
+
hint: o.hint
|
|
130
|
+
})),
|
|
131
|
+
});
|
|
132
|
+
if (Array.isArray(selected) && selected.every((s) => typeof s === 'string')) {
|
|
133
|
+
tools.push(...selected);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const defaultTools = this.toolSelectionService.getDefaultTools(targetPhase);
|
|
138
|
+
tools.push(...defaultTools);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
await this.promptService.confirm('Force handoff even if some checks fail? (Requires waiver)', false);
|
|
143
|
+
this.promptService.startSpinner(`Processing handoff from ${fromPhase} to ${toPhase}...`);
|
|
144
|
+
const useCase = new services_2.PhaseTransitionUseCase(fs);
|
|
145
|
+
const result = await useCase.execute(fromPhase, toPhase, tools, projectRoot);
|
|
146
|
+
this.promptService.stopSpinner();
|
|
147
|
+
if (result.success) {
|
|
148
|
+
this.promptService.showSuccess(`✓ Handoff ${fromPhase} → ${toPhase} completed`);
|
|
149
|
+
if (result.gateResults.length > 0) {
|
|
150
|
+
this.promptService.showInfo('\nGate Validation Results:');
|
|
151
|
+
result.gateResults.forEach(gate => {
|
|
152
|
+
const icon = gate.passed ? chalk_1.default.green('✓') : chalk_1.default.red('✗');
|
|
153
|
+
const required = gate.required ? '[REQUIRED]' : '[OPTIONAL]';
|
|
154
|
+
this.promptService.showInfo(` ${icon} ${gate.id} ${required}: ${gate.description}`);
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (result.executedTools.length > 0) {
|
|
158
|
+
this.promptService.showInfo(`\nTools configured: ${result.executedTools.join(', ')}`);
|
|
159
|
+
}
|
|
160
|
+
const nextSteps = this.getNextSteps(toPhase);
|
|
161
|
+
console.log(chalk_1.default.cyan(`\nNext Steps:\n${chalk_1.default.white(nextSteps)}`));
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.promptService.showError('✗ Handoff failed');
|
|
165
|
+
result.errors.forEach(err => this.promptService.showError(` - ${err}`));
|
|
166
|
+
if (result.gateResults.some(g => !g.passed && g.required)) {
|
|
167
|
+
this.promptService.showWarning('Fix failed required gates or use --force with Architecture Board waiver.');
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
this.promptService.showOutro(result.success ? chalk_1.default.green('Completed') : chalk_1.default.red('Failed'));
|
|
171
|
+
}
|
|
172
|
+
getToolGroupsForPhase(phase) {
|
|
173
|
+
const toolCatalog = this.catalogLoader.loadToolCatalog();
|
|
174
|
+
const phaseDef = toolCatalog.phases[phase];
|
|
175
|
+
if (!phaseDef) {
|
|
176
|
+
return {};
|
|
177
|
+
}
|
|
178
|
+
return phaseDef.toolGroups;
|
|
179
|
+
}
|
|
180
|
+
getNextSteps(phase) {
|
|
181
|
+
const steps = {
|
|
182
|
+
'phase-1': '1. evolith validate\n2. evolith agents install\n3. evolith sdlc handoff --from phase-1 --to phase-2',
|
|
183
|
+
'phase-2': '1. evolith validate\n2. Review rulesets in rulesets/\n3. evolith sdlc handoff --from phase-2 --to phase-3',
|
|
184
|
+
'phase-3': '1. Create ADRs for architectural decisions\n2. Map bounded contexts\n3. evolith sdlc handoff --from phase-3 --to phase-4',
|
|
185
|
+
'phase-4': '1. Review CI/CD pipeline\n2. Configure observability\n3. evolith sdlc handoff --from phase-4 --to phase-5',
|
|
186
|
+
'phase-5': '1. Monitor DORA metrics\n2. Set up alerting\n3. Project is production-ready',
|
|
187
|
+
};
|
|
188
|
+
return steps[phase] || '';
|
|
189
|
+
}
|
|
190
|
+
findProjectRoot(startPath) {
|
|
191
|
+
let current = path.resolve(startPath);
|
|
192
|
+
while (true) {
|
|
193
|
+
const templatesDir = path.join(current, 'reference', 'governance', 'sdlc', '04-artifact-templates');
|
|
194
|
+
const rulesetsDir = path.join(current, 'rulesets');
|
|
195
|
+
if (fs.existsSync(templatesDir) && fs.existsSync(rulesetsDir)) {
|
|
196
|
+
return current;
|
|
197
|
+
}
|
|
198
|
+
const parent = path.dirname(current);
|
|
199
|
+
if (parent === current) {
|
|
200
|
+
return startPath;
|
|
201
|
+
}
|
|
202
|
+
current = parent;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
parseFrom(val) {
|
|
206
|
+
return val;
|
|
207
|
+
}
|
|
208
|
+
parseTo(val) {
|
|
209
|
+
return val;
|
|
210
|
+
}
|
|
211
|
+
parseArtifacts() {
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
parseValidate() {
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
parseForce() {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
exports.HandoffCommand = HandoffCommand;
|
|
222
|
+
__decorate([
|
|
223
|
+
(0, nest_commander_1.Option)({
|
|
224
|
+
flags: '-f, --from [phase]',
|
|
225
|
+
description: 'Source phase (phase-0, phase-1, etc.)',
|
|
226
|
+
}),
|
|
227
|
+
__metadata("design:type", Function),
|
|
228
|
+
__metadata("design:paramtypes", [String]),
|
|
229
|
+
__metadata("design:returntype", String)
|
|
230
|
+
], HandoffCommand.prototype, "parseFrom", null);
|
|
231
|
+
__decorate([
|
|
232
|
+
(0, nest_commander_1.Option)({
|
|
233
|
+
flags: '-t, --to [phase]',
|
|
234
|
+
description: 'Target phase (phase-0, phase-1, etc.)',
|
|
235
|
+
}),
|
|
236
|
+
__metadata("design:type", Function),
|
|
237
|
+
__metadata("design:paramtypes", [String]),
|
|
238
|
+
__metadata("design:returntype", String)
|
|
239
|
+
], HandoffCommand.prototype, "parseTo", null);
|
|
240
|
+
__decorate([
|
|
241
|
+
(0, nest_commander_1.Option)({
|
|
242
|
+
flags: '-a, --artifacts',
|
|
243
|
+
description: 'Generate evidence artifacts',
|
|
244
|
+
}),
|
|
245
|
+
__metadata("design:type", Function),
|
|
246
|
+
__metadata("design:paramtypes", []),
|
|
247
|
+
__metadata("design:returntype", Boolean)
|
|
248
|
+
], HandoffCommand.prototype, "parseArtifacts", null);
|
|
249
|
+
__decorate([
|
|
250
|
+
(0, nest_commander_1.Option)({
|
|
251
|
+
flags: '--validate',
|
|
252
|
+
description: 'Validate phase gates',
|
|
253
|
+
}),
|
|
254
|
+
__metadata("design:type", Function),
|
|
255
|
+
__metadata("design:paramtypes", []),
|
|
256
|
+
__metadata("design:returntype", Boolean)
|
|
257
|
+
], HandoffCommand.prototype, "parseValidate", null);
|
|
258
|
+
__decorate([
|
|
259
|
+
(0, nest_commander_1.Option)({
|
|
260
|
+
flags: '--force',
|
|
261
|
+
description: 'Force handoff despite failed gates',
|
|
262
|
+
}),
|
|
263
|
+
__metadata("design:type", Function),
|
|
264
|
+
__metadata("design:paramtypes", []),
|
|
265
|
+
__metadata("design:returntype", Boolean)
|
|
266
|
+
], HandoffCommand.prototype, "parseForce", null);
|
|
267
|
+
exports.HandoffCommand = HandoffCommand = __decorate([
|
|
268
|
+
(0, nest_commander_1.SubCommand)({
|
|
269
|
+
name: 'handoff',
|
|
270
|
+
description: 'Transitions artifacts between SDLC phases with interactive guided flow',
|
|
271
|
+
}),
|
|
272
|
+
__param(1, (0, common_1.Inject)('IFileSystem')),
|
|
273
|
+
__metadata("design:paramtypes", [catalog_loader_1.CatalogLoader, Object])
|
|
274
|
+
], HandoffCommand);
|
|
275
|
+
//# sourceMappingURL=handoff.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handoff.command.js","sourceRoot":"","sources":["../../../src/commands/sdlc/handoff.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SdlcCommand = void 0;
|
|
16
|
+
const nest_commander_1 = require("nest-commander");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const base_command_1 = require("../../infrastructure/cli/base-command");
|
|
19
|
+
const handoff_command_1 = require("./handoff.command");
|
|
20
|
+
const generate_domain_command_1 = require("./generate-domain.command");
|
|
21
|
+
const gate_status_command_1 = require("./gate-status.command");
|
|
22
|
+
let SdlcCommand = class SdlcCommand extends base_command_1.BaseEvolithCommand {
|
|
23
|
+
constructor() {
|
|
24
|
+
super('SdlcCommand');
|
|
25
|
+
}
|
|
26
|
+
async executeCommand(passedParam, options) {
|
|
27
|
+
this.promptService.showIntro('Evolith SDLC CLI');
|
|
28
|
+
this.promptService.showInfo(chalk_1.default.bold('Available subcommands:'));
|
|
29
|
+
this.promptService.showInfo(` ${chalk_1.default.cyan('handoff')} - Transition artifacts between phases`);
|
|
30
|
+
this.promptService.showInfo(` ${chalk_1.default.cyan('generate')} - ${chalk_1.default.yellow('[alpha]')} Generate code from models (e.g. domain from DDD)`);
|
|
31
|
+
this.promptService.showInfo(` ${chalk_1.default.cyan('gate-status')} - Display current SDLC phase gate validation status`);
|
|
32
|
+
this.promptService.showOutro(chalk_1.default.gray('Run `evolith sdlc <subcommand> --help` for more information.'));
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.SdlcCommand = SdlcCommand;
|
|
36
|
+
exports.SdlcCommand = SdlcCommand = __decorate([
|
|
37
|
+
(0, nest_commander_1.Command)({
|
|
38
|
+
name: 'sdlc',
|
|
39
|
+
description: 'Orchestrates the generation of artifacts and transitions (Handoffs) between the lifecycle phases (Discovery, Design, Construction)',
|
|
40
|
+
subCommands: [handoff_command_1.HandoffCommand, generate_domain_command_1.GenerateDomainCommand, gate_status_command_1.GateStatusCommand],
|
|
41
|
+
}),
|
|
42
|
+
__metadata("design:paramtypes", [])
|
|
43
|
+
], SdlcCommand);
|
|
44
|
+
//# sourceMappingURL=sdlc.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdlc.command.js","sourceRoot":"","sources":["../../../src/commands/sdlc/sdlc.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mDAAyC;AACzC,kDAA0B;AAC1B,wEAA2E;AAE3E,uDAAmD;AACnD,uEAAkE;AAClE,+DAA0D;AAOnD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,iCAAkB;IACjD;QACE,KAAK,CAAC,aAAa,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,WAAqB,EACrB,OAAiC;QAEjC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC;QAC5I,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,sDAAsD,CAAC,CAAC;QAClH,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,eAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC,CAAC;IAC3G,CAAC;CACF,CAAA;AAhBY,kCAAW;sBAAX,WAAW;IALvB,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oIAAoI;QACjJ,WAAW,EAAE,CAAC,gCAAc,EAAE,+CAAqB,EAAE,uCAAiB,CAAC;KACxE,CAAC;;GACW,WAAW,CAgBvB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IFileSystem } from '@evolith/core-domain/domain/interfaces';
|
|
2
|
+
import { BaseEvolithCommand } from '../../infrastructure/cli/base-command';
|
|
3
|
+
interface StandardsCommandOptions {
|
|
4
|
+
init?: boolean;
|
|
5
|
+
list?: boolean;
|
|
6
|
+
get?: string;
|
|
7
|
+
validate?: string;
|
|
8
|
+
export?: string;
|
|
9
|
+
format?: string;
|
|
10
|
+
category?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class StandardsCommand extends BaseEvolithCommand {
|
|
13
|
+
private readonly fileSystem;
|
|
14
|
+
constructor(fileSystem: IFileSystem);
|
|
15
|
+
executeCommand(passedParam: string[], options?: StandardsCommandOptions): Promise<void>;
|
|
16
|
+
private interactiveMode;
|
|
17
|
+
private initializeStandards;
|
|
18
|
+
private listStandards;
|
|
19
|
+
private getStandard;
|
|
20
|
+
private validateStandards;
|
|
21
|
+
private exportStandard;
|
|
22
|
+
parseInit(): boolean;
|
|
23
|
+
parseList(): boolean;
|
|
24
|
+
parseGet(val: string): string;
|
|
25
|
+
parseValidate(val: string): string;
|
|
26
|
+
parseExport(val: string): string;
|
|
27
|
+
parseFormat(val: string): string;
|
|
28
|
+
parseCategory(val: string): string;
|
|
29
|
+
}
|
|
30
|
+
export {};
|