kodu 2.1.3 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/core/registry/registry.service.test.ts +82 -0
- package/__tests__/shared/runbook/runbook.service.test.ts +104 -0
- package/dist/package.json +1 -1
- package/dist/src/app.module.js +6 -0
- package/dist/src/app.module.js.map +1 -1
- package/dist/src/commands/ops/ops-add.command.d.ts +18 -0
- package/dist/src/commands/ops/ops-add.command.js +102 -0
- package/dist/src/commands/ops/ops-add.command.js.map +1 -0
- package/dist/src/commands/ops/ops-init.command.d.ts +22 -0
- package/dist/src/commands/ops/ops-init.command.js +130 -0
- package/dist/src/commands/ops/ops-init.command.js.map +1 -0
- package/dist/src/commands/ops/ops-list.command.d.ts +12 -0
- package/dist/src/commands/ops/ops-list.command.js +73 -0
- package/dist/src/commands/ops/ops-list.command.js.map +1 -0
- package/dist/src/commands/ops/ops-path.command.d.ts +9 -0
- package/dist/src/commands/ops/ops-path.command.js +52 -0
- package/dist/src/commands/ops/ops-path.command.js.map +1 -0
- package/dist/src/commands/ops/ops-runbook.command.d.ts +12 -0
- package/dist/src/commands/ops/ops-runbook.command.js +81 -0
- package/dist/src/commands/ops/ops-runbook.command.js.map +1 -0
- package/dist/src/commands/ops/ops-status.command.d.ts +11 -0
- package/dist/src/commands/ops/ops-status.command.js +62 -0
- package/dist/src/commands/ops/ops-status.command.js.map +1 -0
- package/dist/src/commands/ops/ops-use.command.d.ts +12 -0
- package/dist/src/commands/ops/ops-use.command.js +76 -0
- package/dist/src/commands/ops/ops-use.command.js.map +1 -0
- package/dist/src/commands/ops/ops.command.d.ts +7 -0
- package/dist/src/commands/ops/ops.command.js +56 -0
- package/dist/src/commands/ops/ops.command.js.map +1 -0
- package/dist/src/commands/ops/ops.helpers.d.ts +2 -0
- package/dist/src/commands/ops/ops.helpers.js +11 -0
- package/dist/src/commands/ops/ops.helpers.js.map +1 -0
- package/dist/src/commands/ops/ops.module.d.ts +2 -0
- package/dist/src/commands/ops/ops.module.js +36 -0
- package/dist/src/commands/ops/ops.module.js.map +1 -0
- package/dist/src/core/registry/registry.module.d.ts +2 -0
- package/dist/src/core/registry/registry.module.js +22 -0
- package/dist/src/core/registry/registry.module.js.map +1 -0
- package/dist/src/core/registry/registry.schema.d.ts +24 -0
- package/dist/src/core/registry/registry.schema.js +21 -0
- package/dist/src/core/registry/registry.schema.js.map +1 -0
- package/dist/src/core/registry/registry.service.d.ts +16 -0
- package/dist/src/core/registry/registry.service.js +91 -0
- package/dist/src/core/registry/registry.service.js.map +1 -0
- package/dist/src/shared/runbook/runbook.module.d.ts +2 -0
- package/dist/src/shared/runbook/runbook.module.js +22 -0
- package/dist/src/shared/runbook/runbook.module.js.map +1 -0
- package/dist/src/shared/runbook/runbook.service.d.ts +20 -0
- package/dist/src/shared/runbook/runbook.service.js +118 -0
- package/dist/src/shared/runbook/runbook.service.js.map +1 -0
- package/dist/src/shared/runbook/runbook.templates.d.ts +6 -0
- package/dist/src/shared/runbook/runbook.templates.js +49 -0
- package/dist/src/shared/runbook/runbook.templates.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/registry.schema.json +39 -0
- package/scripts/generate-json-schema.ts +14 -5
- package/skills/ac/SKILL.md +239 -0
- package/skills/al/SKILL.md +98 -0
- package/skills/audit/SKILL.md +205 -0
- package/skills/audit/audit-baseline-template.yml +188 -0
- package/skills/audit/runtime-detect.md +64 -0
- package/skills/audit/stacks/_generic.md +41 -0
- package/skills/audit/stacks/_registry.md +47 -0
- package/skills/audit/stacks/go.md +66 -0
- package/skills/audit/stacks/java.md +44 -0
- package/skills/audit/stacks/node.md +57 -0
- package/skills/audit/stacks/python.md +45 -0
- package/skills/audit/stacks/rust.md +44 -0
- package/skills/audit-api-contracts/SKILL.md +201 -0
- package/skills/audit-architecture/SKILL.md +200 -0
- package/skills/audit-bugs/SKILL.md +226 -0
- package/skills/audit-concurrency/SKILL.md +197 -0
- package/skills/audit-deployment/SKILL.md +218 -0
- package/skills/audit-docs/SKILL.md +209 -0
- package/skills/audit-errors/SKILL.md +216 -0
- package/skills/audit-logging/SKILL.md +197 -0
- package/skills/audit-matrix/SKILL.md +245 -0
- package/skills/audit-meta/SKILL.md +120 -0
- package/skills/audit-naming/SKILL.md +200 -0
- package/skills/audit-owasp/SKILL.md +223 -0
- package/skills/audit-performance/SKILL.md +199 -0
- package/skills/audit-reinvention/SKILL.md +214 -0
- package/skills/audit-secrets/SKILL.md +198 -0
- package/skills/audit-tests/SKILL.md +210 -0
- package/skills/audit-validation/SKILL.md +206 -0
- package/skills/audit-verify/SKILL.md +139 -0
- package/skills/audit-yagni/SKILL.md +188 -0
- package/skills/generate-project-docs/SKILL.md +380 -0
- package/skills/ops/SKILL.md +94 -0
- package/skills/post-call-task-builder/SKILL.md +419 -0
- package/skills/skills-best-practices/SKILL.md +415 -0
- package/src/app.module.ts +6 -0
- package/src/commands/ops/ops-add.command.ts +83 -0
- package/src/commands/ops/ops-init.command.ts +125 -0
- package/src/commands/ops/ops-list.command.ts +57 -0
- package/src/commands/ops/ops-path.command.ts +38 -0
- package/src/commands/ops/ops-runbook.command.ts +74 -0
- package/src/commands/ops/ops-status.command.ts +47 -0
- package/src/commands/ops/ops-use.command.ts +76 -0
- package/src/commands/ops/ops.command.ts +42 -0
- package/src/commands/ops/ops.helpers.ts +20 -0
- package/src/commands/ops/ops.module.ts +23 -0
- package/src/core/registry/registry.module.ts +9 -0
- package/src/core/registry/registry.schema.ts +46 -0
- package/src/core/registry/registry.service.ts +128 -0
- package/src/shared/runbook/runbook.module.ts +9 -0
- package/src/shared/runbook/runbook.service.ts +164 -0
- package/src/shared/runbook/runbook.templates.ts +66 -0
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OpsPathCommand = void 0;
|
|
13
|
+
const nest_commander_1 = require("nest-commander");
|
|
14
|
+
const registry_service_1 = require("../../core/registry/registry.service");
|
|
15
|
+
const ui_service_1 = require("../../core/ui/ui.service");
|
|
16
|
+
const ops_helpers_1 = require("./ops.helpers");
|
|
17
|
+
let OpsPathCommand = class OpsPathCommand extends nest_commander_1.CommandRunner {
|
|
18
|
+
ui;
|
|
19
|
+
registry;
|
|
20
|
+
constructor(ui, registry) {
|
|
21
|
+
super();
|
|
22
|
+
this.ui = ui;
|
|
23
|
+
this.registry = registry;
|
|
24
|
+
}
|
|
25
|
+
async run(inputs) {
|
|
26
|
+
const name = inputs[0];
|
|
27
|
+
if (!name) {
|
|
28
|
+
this.ui.log.error('Укажи имя проекта: kodu ops path <name>');
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const root = await (0, ops_helpers_1.resolveProjectRoot)(this.registry, name);
|
|
34
|
+
process.stdout.write(`${root}\n`);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
this.ui.log.error(error.message);
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.OpsPathCommand = OpsPathCommand;
|
|
43
|
+
exports.OpsPathCommand = OpsPathCommand = __decorate([
|
|
44
|
+
(0, nest_commander_1.SubCommand)({
|
|
45
|
+
name: 'path',
|
|
46
|
+
description: 'Напечатать путь к репозиторию проекта (удобно для cd $(kodu ops path <name>))',
|
|
47
|
+
arguments: '<name>',
|
|
48
|
+
}),
|
|
49
|
+
__metadata("design:paramtypes", [ui_service_1.UiService,
|
|
50
|
+
registry_service_1.RegistryService])
|
|
51
|
+
], OpsPathCommand);
|
|
52
|
+
//# sourceMappingURL=ops-path.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops-path.command.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops-path.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA2D;AAC3D,2EAAuE;AACvE,yDAAqD;AACrD,+CAAmD;AAQ5C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAAa;IAE5B;IACA;IAFnB,YACmB,EAAa,EACb,QAAyB;QAE1C,KAAK,EAAE,CAAC;QAHS,OAAE,GAAF,EAAE,CAAW;QACb,aAAQ,GAAR,QAAQ,CAAiB;IAG5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAgB;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAA,gCAAkB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF,CAAA;AA1BY,wCAAc;yBAAd,cAAc;IAN1B,IAAA,2BAAU,EAAC;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,+EAA+E;QACjF,SAAS,EAAE,QAAQ;KACpB,CAAC;qCAGuB,sBAAS;QACH,kCAAe;GAHjC,cAAc,CA0B1B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
import { RegistryService } from '../../core/registry/registry.service';
|
|
3
|
+
import { UiService } from '../../core/ui/ui.service';
|
|
4
|
+
import { RunbookService } from '../../shared/runbook/runbook.service';
|
|
5
|
+
export declare class OpsRunbookCommand extends CommandRunner {
|
|
6
|
+
private readonly ui;
|
|
7
|
+
private readonly registry;
|
|
8
|
+
private readonly runbook;
|
|
9
|
+
constructor(ui: UiService, registry: RegistryService, runbook: RunbookService);
|
|
10
|
+
run(inputs: string[]): Promise<void>;
|
|
11
|
+
private extractStand;
|
|
12
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OpsRunbookCommand = void 0;
|
|
13
|
+
const nest_commander_1 = require("nest-commander");
|
|
14
|
+
const registry_service_1 = require("../../core/registry/registry.service");
|
|
15
|
+
const ui_service_1 = require("../../core/ui/ui.service");
|
|
16
|
+
const runbook_service_1 = require("../../shared/runbook/runbook.service");
|
|
17
|
+
const ops_helpers_1 = require("./ops.helpers");
|
|
18
|
+
let OpsRunbookCommand = class OpsRunbookCommand extends nest_commander_1.CommandRunner {
|
|
19
|
+
ui;
|
|
20
|
+
registry;
|
|
21
|
+
runbook;
|
|
22
|
+
constructor(ui, registry, runbook) {
|
|
23
|
+
super();
|
|
24
|
+
this.ui = ui;
|
|
25
|
+
this.registry = registry;
|
|
26
|
+
this.runbook = runbook;
|
|
27
|
+
}
|
|
28
|
+
async run(inputs) {
|
|
29
|
+
const name = inputs[0];
|
|
30
|
+
const stand = inputs[1];
|
|
31
|
+
if (!name) {
|
|
32
|
+
this.ui.log.error('Укажи имя проекта: kodu ops runbook <name> [stand]');
|
|
33
|
+
process.exitCode = 1;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const root = await (0, ops_helpers_1.resolveProjectRoot)(this.registry, name);
|
|
38
|
+
if (!(await this.runbook.exists(root))) {
|
|
39
|
+
this.ui.log.warn(`В проекте "${name}" нет .runbook/. Запусти: kodu ops init`);
|
|
40
|
+
process.exitCode = 1;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const markdown = await this.runbook.readRunbook(root);
|
|
44
|
+
const output = stand ? this.extractStand(markdown, stand) : markdown;
|
|
45
|
+
if (!output) {
|
|
46
|
+
this.ui.log.warn(`Секция для стенда "${stand}" не найдена в runbook.`);
|
|
47
|
+
process.exitCode = 1;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
process.stdout.write(`${output.trimEnd()}\n`);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
this.ui.log.error(error.message);
|
|
54
|
+
process.exitCode = 1;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
extractStand(markdown, stand) {
|
|
58
|
+
const lines = markdown.split(/\r?\n/);
|
|
59
|
+
const startPrefix = `## Стенд: ${stand}`;
|
|
60
|
+
const start = lines.findIndex((line) => line.startsWith(startPrefix));
|
|
61
|
+
if (start === -1) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const rest = lines.slice(start + 1);
|
|
65
|
+
const nextHeading = rest.findIndex((line) => line.startsWith('## '));
|
|
66
|
+
const end = nextHeading === -1 ? lines.length : start + 1 + nextHeading;
|
|
67
|
+
return lines.slice(start, end).join('\n');
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
exports.OpsRunbookCommand = OpsRunbookCommand;
|
|
71
|
+
exports.OpsRunbookCommand = OpsRunbookCommand = __decorate([
|
|
72
|
+
(0, nest_commander_1.SubCommand)({
|
|
73
|
+
name: 'runbook',
|
|
74
|
+
description: 'Напечатать runbook проекта (или секцию конкретного стенда)',
|
|
75
|
+
arguments: '<name> [stand]',
|
|
76
|
+
}),
|
|
77
|
+
__metadata("design:paramtypes", [ui_service_1.UiService,
|
|
78
|
+
registry_service_1.RegistryService,
|
|
79
|
+
runbook_service_1.RunbookService])
|
|
80
|
+
], OpsRunbookCommand);
|
|
81
|
+
//# sourceMappingURL=ops-runbook.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops-runbook.command.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops-runbook.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
import { RegistryService } from '../../core/registry/registry.service';
|
|
3
|
+
import { UiService } from '../../core/ui/ui.service';
|
|
4
|
+
import { RunbookService } from '../../shared/runbook/runbook.service';
|
|
5
|
+
export declare class OpsStatusCommand extends CommandRunner {
|
|
6
|
+
private readonly ui;
|
|
7
|
+
private readonly registry;
|
|
8
|
+
private readonly runbook;
|
|
9
|
+
constructor(ui: UiService, registry: RegistryService, runbook: RunbookService);
|
|
10
|
+
run(inputs: string[]): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OpsStatusCommand = void 0;
|
|
13
|
+
const nest_commander_1 = require("nest-commander");
|
|
14
|
+
const registry_service_1 = require("../../core/registry/registry.service");
|
|
15
|
+
const ui_service_1 = require("../../core/ui/ui.service");
|
|
16
|
+
const runbook_service_1 = require("../../shared/runbook/runbook.service");
|
|
17
|
+
const ops_helpers_1 = require("./ops.helpers");
|
|
18
|
+
let OpsStatusCommand = class OpsStatusCommand extends nest_commander_1.CommandRunner {
|
|
19
|
+
ui;
|
|
20
|
+
registry;
|
|
21
|
+
runbook;
|
|
22
|
+
constructor(ui, registry, runbook) {
|
|
23
|
+
super();
|
|
24
|
+
this.ui = ui;
|
|
25
|
+
this.registry = registry;
|
|
26
|
+
this.runbook = runbook;
|
|
27
|
+
}
|
|
28
|
+
async run(inputs) {
|
|
29
|
+
try {
|
|
30
|
+
const name = inputs[0];
|
|
31
|
+
const root = name
|
|
32
|
+
? await (0, ops_helpers_1.resolveProjectRoot)(this.registry, name)
|
|
33
|
+
: process.cwd();
|
|
34
|
+
if (!(await this.runbook.exists(root))) {
|
|
35
|
+
this.ui.log.warn(`В ${root} нет .runbook/. Инициализируй проект: kodu ops init`);
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const config = await this.runbook.readConfig(root);
|
|
40
|
+
this.ui.log.info(`Проект: ${config.project}`);
|
|
41
|
+
this.ui.log.info(`Активный стенд: ${config.activeStand}`);
|
|
42
|
+
this.ui.log.info(`Стенды: ${config.stands.join(', ')}`);
|
|
43
|
+
this.ui.log.info(`Путь: ${root}`);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
this.ui.log.error(error.message);
|
|
47
|
+
process.exitCode = 1;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.OpsStatusCommand = OpsStatusCommand;
|
|
52
|
+
exports.OpsStatusCommand = OpsStatusCommand = __decorate([
|
|
53
|
+
(0, nest_commander_1.SubCommand)({
|
|
54
|
+
name: 'status',
|
|
55
|
+
description: 'Показать активный стенд и стенды проекта (по имени или в текущей папке)',
|
|
56
|
+
arguments: '[name]',
|
|
57
|
+
}),
|
|
58
|
+
__metadata("design:paramtypes", [ui_service_1.UiService,
|
|
59
|
+
registry_service_1.RegistryService,
|
|
60
|
+
runbook_service_1.RunbookService])
|
|
61
|
+
], OpsStatusCommand);
|
|
62
|
+
//# sourceMappingURL=ops-status.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops-status.command.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops-status.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA2D;AAC3D,2EAAuE;AACvE,yDAAqD;AACrD,0EAAsE;AACtE,+CAAmD;AAQ5C,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,8BAAa;IAE9B;IACA;IACA;IAHnB,YACmB,EAAa,EACb,QAAyB,EACzB,OAAuB;QAExC,KAAK,EAAE,CAAC;QAJS,OAAE,GAAF,EAAE,CAAW;QACb,aAAQ,GAAR,QAAQ,CAAiB;QACzB,YAAO,GAAP,OAAO,CAAgB;IAG1C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAgB;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI;gBACf,CAAC,CAAC,MAAM,IAAA,gCAAkB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;gBAC/C,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAElB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACd,KAAK,IAAI,qDAAqD,CAC/D,CAAC;gBACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF,CAAA;AAlCY,4CAAgB;2BAAhB,gBAAgB;IAN5B,IAAA,2BAAU,EAAC;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,yEAAyE;QAC3E,SAAS,EAAE,QAAQ;KACpB,CAAC;qCAGuB,sBAAS;QACH,kCAAe;QAChB,gCAAc;GAJ/B,gBAAgB,CAkC5B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
import { RegistryService } from '../../core/registry/registry.service';
|
|
3
|
+
import { UiService } from '../../core/ui/ui.service';
|
|
4
|
+
import { RunbookService } from '../../shared/runbook/runbook.service';
|
|
5
|
+
export declare class OpsUseCommand extends CommandRunner {
|
|
6
|
+
private readonly ui;
|
|
7
|
+
private readonly registry;
|
|
8
|
+
private readonly runbook;
|
|
9
|
+
constructor(ui: UiService, registry: RegistryService, runbook: RunbookService);
|
|
10
|
+
run(inputs: string[]): Promise<void>;
|
|
11
|
+
private resolveTarget;
|
|
12
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OpsUseCommand = void 0;
|
|
13
|
+
const nest_commander_1 = require("nest-commander");
|
|
14
|
+
const registry_service_1 = require("../../core/registry/registry.service");
|
|
15
|
+
const ui_service_1 = require("../../core/ui/ui.service");
|
|
16
|
+
const runbook_service_1 = require("../../shared/runbook/runbook.service");
|
|
17
|
+
const ops_helpers_1 = require("./ops.helpers");
|
|
18
|
+
let OpsUseCommand = class OpsUseCommand extends nest_commander_1.CommandRunner {
|
|
19
|
+
ui;
|
|
20
|
+
registry;
|
|
21
|
+
runbook;
|
|
22
|
+
constructor(ui, registry, runbook) {
|
|
23
|
+
super();
|
|
24
|
+
this.ui = ui;
|
|
25
|
+
this.registry = registry;
|
|
26
|
+
this.runbook = runbook;
|
|
27
|
+
}
|
|
28
|
+
async run(inputs) {
|
|
29
|
+
try {
|
|
30
|
+
const { root, stand } = await this.resolveTarget(inputs);
|
|
31
|
+
if (!stand) {
|
|
32
|
+
this.ui.log.error('Укажи стенд: kodu ops use <stand> или kodu ops use <name> <stand>');
|
|
33
|
+
process.exitCode = 1;
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!(await this.runbook.exists(root))) {
|
|
37
|
+
this.ui.log.warn(`В ${root} нет .runbook/. Инициализируй проект: kodu ops init`);
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const config = await this.runbook.readConfig(root);
|
|
42
|
+
const stands = config.stands.includes(stand)
|
|
43
|
+
? config.stands
|
|
44
|
+
: [...config.stands, stand];
|
|
45
|
+
if (!config.stands.includes(stand)) {
|
|
46
|
+
this.ui.log.info(`Стенд "${stand}" добавлен в список стендов проекта.`);
|
|
47
|
+
}
|
|
48
|
+
await this.runbook.writeConfig({ ...config, activeStand: stand, stands }, root);
|
|
49
|
+
this.ui.log.success(`Активный стенд проекта "${config.project}" → ${stand}`);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
this.ui.log.error(error.message);
|
|
53
|
+
process.exitCode = 1;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async resolveTarget(inputs) {
|
|
57
|
+
if (inputs.length >= 2) {
|
|
58
|
+
const root = await (0, ops_helpers_1.resolveProjectRoot)(this.registry, inputs[0]);
|
|
59
|
+
return { root, stand: inputs[1] };
|
|
60
|
+
}
|
|
61
|
+
return { root: process.cwd(), stand: inputs[0] };
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.OpsUseCommand = OpsUseCommand;
|
|
65
|
+
exports.OpsUseCommand = OpsUseCommand = __decorate([
|
|
66
|
+
(0, nest_commander_1.SubCommand)({
|
|
67
|
+
name: 'use',
|
|
68
|
+
aliases: ['switch'],
|
|
69
|
+
description: 'Переключить активный стенд: "kodu ops use <stand>" в текущем проекте или "kodu ops use <name> <stand>"',
|
|
70
|
+
arguments: '<args...>',
|
|
71
|
+
}),
|
|
72
|
+
__metadata("design:paramtypes", [ui_service_1.UiService,
|
|
73
|
+
registry_service_1.RegistryService,
|
|
74
|
+
runbook_service_1.RunbookService])
|
|
75
|
+
], OpsUseCommand);
|
|
76
|
+
//# sourceMappingURL=ops-use.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops-use.command.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops-use.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.OpsCommand = void 0;
|
|
13
|
+
const nest_commander_1 = require("nest-commander");
|
|
14
|
+
const ui_service_1 = require("../../core/ui/ui.service");
|
|
15
|
+
const ops_add_command_1 = require("./ops-add.command");
|
|
16
|
+
const ops_init_command_1 = require("./ops-init.command");
|
|
17
|
+
const ops_list_command_1 = require("./ops-list.command");
|
|
18
|
+
const ops_path_command_1 = require("./ops-path.command");
|
|
19
|
+
const ops_runbook_command_1 = require("./ops-runbook.command");
|
|
20
|
+
const ops_status_command_1 = require("./ops-status.command");
|
|
21
|
+
const ops_use_command_1 = require("./ops-use.command");
|
|
22
|
+
let OpsCommand = class OpsCommand extends nest_commander_1.CommandRunner {
|
|
23
|
+
ui;
|
|
24
|
+
constructor(ui) {
|
|
25
|
+
super();
|
|
26
|
+
this.ui = ui;
|
|
27
|
+
}
|
|
28
|
+
async run() {
|
|
29
|
+
this.ui.log.info('Использование: kodu ops <команда>');
|
|
30
|
+
this.ui.log.info(' init — настроить стенды в текущем проекте');
|
|
31
|
+
this.ui.log.info(' list — список всех проектов');
|
|
32
|
+
this.ui.log.info(' add <name> --path <d> — зарегистрировать проект');
|
|
33
|
+
this.ui.log.info(' status [name] — активный стенд проекта');
|
|
34
|
+
this.ui.log.info(' use <stand> — переключить активный стенд');
|
|
35
|
+
this.ui.log.info(' path <name> — путь к репозиторию проекта');
|
|
36
|
+
this.ui.log.info(' runbook <name> [stand]— показать инструкции по стенду');
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.OpsCommand = OpsCommand;
|
|
40
|
+
exports.OpsCommand = OpsCommand = __decorate([
|
|
41
|
+
(0, nest_commander_1.Command)({
|
|
42
|
+
name: 'ops',
|
|
43
|
+
description: 'Работа с проектами и стендами (local/dev/stage/prod) из любого места',
|
|
44
|
+
subCommands: [
|
|
45
|
+
ops_init_command_1.OpsInitCommand,
|
|
46
|
+
ops_list_command_1.OpsListCommand,
|
|
47
|
+
ops_add_command_1.OpsAddCommand,
|
|
48
|
+
ops_status_command_1.OpsStatusCommand,
|
|
49
|
+
ops_use_command_1.OpsUseCommand,
|
|
50
|
+
ops_path_command_1.OpsPathCommand,
|
|
51
|
+
ops_runbook_command_1.OpsRunbookCommand,
|
|
52
|
+
],
|
|
53
|
+
}),
|
|
54
|
+
__metadata("design:paramtypes", [ui_service_1.UiService])
|
|
55
|
+
], OpsCommand);
|
|
56
|
+
//# sourceMappingURL=ops.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.command.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAwD;AACxD,yDAAqD;AACrD,uDAAkD;AAClD,yDAAoD;AACpD,yDAAoD;AACpD,yDAAoD;AACpD,+DAA0D;AAC1D,6DAAwD;AACxD,uDAAkD;AAgB3C,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,8BAAa;IACd;IAA7B,YAA6B,EAAa;QACxC,KAAK,EAAE,CAAC;QADmB,OAAE,GAAF,EAAE,CAAW;IAE1C,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACd,8DAA8D,CAC/D,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACrE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAjBY,gCAAU;qBAAV,UAAU;IAdtB,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,KAAK;QACX,WAAW,EACT,sEAAsE;QACxE,WAAW,EAAE;YACX,iCAAc;YACd,iCAAc;YACd,+BAAa;YACb,qCAAgB;YAChB,+BAAa;YACb,iCAAc;YACd,uCAAiB;SAClB;KACF,CAAC;qCAEiC,sBAAS;GAD/B,UAAU,CAiBtB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveProjectRoot = resolveProjectRoot;
|
|
4
|
+
async function resolveProjectRoot(registry, name) {
|
|
5
|
+
const entry = await registry.get(name);
|
|
6
|
+
if (!entry) {
|
|
7
|
+
throw new Error(`Проект "${name}" не найден в реестре. Список проектов: kodu ops list`);
|
|
8
|
+
}
|
|
9
|
+
return entry.path;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ops.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.helpers.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops.helpers.ts"],"names":[],"mappings":";;AAMA,gDAaC;AAbM,KAAK,UAAU,kBAAkB,CACtC,QAAyB,EACzB,IAAY;IAEZ,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,uDAAuD,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.OpsModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const ops_command_1 = require("./ops.command");
|
|
12
|
+
const ops_add_command_1 = require("./ops-add.command");
|
|
13
|
+
const ops_init_command_1 = require("./ops-init.command");
|
|
14
|
+
const ops_list_command_1 = require("./ops-list.command");
|
|
15
|
+
const ops_path_command_1 = require("./ops-path.command");
|
|
16
|
+
const ops_runbook_command_1 = require("./ops-runbook.command");
|
|
17
|
+
const ops_status_command_1 = require("./ops-status.command");
|
|
18
|
+
const ops_use_command_1 = require("./ops-use.command");
|
|
19
|
+
let OpsModule = class OpsModule {
|
|
20
|
+
};
|
|
21
|
+
exports.OpsModule = OpsModule;
|
|
22
|
+
exports.OpsModule = OpsModule = __decorate([
|
|
23
|
+
(0, common_1.Module)({
|
|
24
|
+
providers: [
|
|
25
|
+
ops_command_1.OpsCommand,
|
|
26
|
+
ops_init_command_1.OpsInitCommand,
|
|
27
|
+
ops_list_command_1.OpsListCommand,
|
|
28
|
+
ops_add_command_1.OpsAddCommand,
|
|
29
|
+
ops_status_command_1.OpsStatusCommand,
|
|
30
|
+
ops_use_command_1.OpsUseCommand,
|
|
31
|
+
ops_path_command_1.OpsPathCommand,
|
|
32
|
+
ops_runbook_command_1.OpsRunbookCommand,
|
|
33
|
+
],
|
|
34
|
+
})
|
|
35
|
+
], OpsModule);
|
|
36
|
+
//# sourceMappingURL=ops.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ops.module.js","sourceRoot":"","sources":["../../../../src/commands/ops/ops.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAA2C;AAC3C,uDAAkD;AAClD,yDAAoD;AACpD,yDAAoD;AACpD,yDAAoD;AACpD,+DAA0D;AAC1D,6DAAwD;AACxD,uDAAkD;AAc3C,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAZrB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,wBAAU;YACV,iCAAc;YACd,iCAAc;YACd,+BAAa;YACb,qCAAgB;YAChB,+BAAa;YACb,iCAAc;YACd,uCAAiB;SAClB;KACF,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RegistryModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const registry_service_1 = require("./registry.service");
|
|
12
|
+
let RegistryModule = class RegistryModule {
|
|
13
|
+
};
|
|
14
|
+
exports.RegistryModule = RegistryModule;
|
|
15
|
+
exports.RegistryModule = RegistryModule = __decorate([
|
|
16
|
+
(0, common_1.Global)(),
|
|
17
|
+
(0, common_1.Module)({
|
|
18
|
+
providers: [registry_service_1.RegistryService],
|
|
19
|
+
exports: [registry_service_1.RegistryService],
|
|
20
|
+
})
|
|
21
|
+
], RegistryModule);
|
|
22
|
+
//# sourceMappingURL=registry.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.module.js","sourceRoot":"","sources":["../../../../src/core/registry/registry.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,yDAAqD;AAO9C,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAL1B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,kCAAe,CAAC;QAC5B,OAAO,EAAE,CAAC,kCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const DEFAULT_STANDS: readonly ["local", "dev", "stage", "prod"];
|
|
3
|
+
export declare const projectEntrySchema: z.ZodObject<{
|
|
4
|
+
path: z.ZodString;
|
|
5
|
+
repo: z.ZodOptional<z.ZodString>;
|
|
6
|
+
stands: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type ProjectEntry = z.infer<typeof projectEntrySchema>;
|
|
9
|
+
export declare const registrySchema: z.ZodObject<{
|
|
10
|
+
$schema: z.ZodOptional<z.ZodString>;
|
|
11
|
+
projects: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
12
|
+
path: z.ZodString;
|
|
13
|
+
repo: z.ZodOptional<z.ZodString>;
|
|
14
|
+
stands: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
15
|
+
}, z.core.$strip>>>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
export type Registry = z.infer<typeof registrySchema>;
|
|
18
|
+
export declare const projectConfigSchema: z.ZodObject<{
|
|
19
|
+
$schema: z.ZodOptional<z.ZodString>;
|
|
20
|
+
project: z.ZodString;
|
|
21
|
+
activeStand: z.ZodDefault<z.ZodString>;
|
|
22
|
+
stands: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type ProjectConfig = z.infer<typeof projectConfigSchema>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.projectConfigSchema = exports.registrySchema = exports.projectEntrySchema = exports.DEFAULT_STANDS = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.DEFAULT_STANDS = ['local', 'dev', 'stage', 'prod'];
|
|
6
|
+
exports.projectEntrySchema = zod_1.z.object({
|
|
7
|
+
path: zod_1.z.string().min(1),
|
|
8
|
+
repo: zod_1.z.string().optional(),
|
|
9
|
+
stands: zod_1.z.array(zod_1.z.string()).default([...exports.DEFAULT_STANDS]),
|
|
10
|
+
});
|
|
11
|
+
exports.registrySchema = zod_1.z.object({
|
|
12
|
+
$schema: zod_1.z.string().optional(),
|
|
13
|
+
projects: zod_1.z.record(zod_1.z.string(), exports.projectEntrySchema).default({}),
|
|
14
|
+
});
|
|
15
|
+
exports.projectConfigSchema = zod_1.z.object({
|
|
16
|
+
$schema: zod_1.z.string().optional(),
|
|
17
|
+
project: zod_1.z.string().min(1),
|
|
18
|
+
activeStand: zod_1.z.string().default('local'),
|
|
19
|
+
stands: zod_1.z.array(zod_1.z.string()).default([...exports.DEFAULT_STANDS]),
|
|
20
|
+
});
|
|
21
|
+
//# sourceMappingURL=registry.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.schema.js","sourceRoot":"","sources":["../../../../src/core/registry/registry.schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAMX,QAAA,cAAc,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAG5D,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAEzC,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE3B,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,sBAAc,CAAC,CAAC;CACzD,CAAC,CAAC;AAQU,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,0BAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/D,CAAC,CAAC;AAQU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE9B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAExC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,sBAAc,CAAC,CAAC;CACzD,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ProjectEntry, type Registry } from './registry.schema';
|
|
2
|
+
export declare class RegistryService {
|
|
3
|
+
private readonly dir;
|
|
4
|
+
private readonly file;
|
|
5
|
+
getFilePath(): string;
|
|
6
|
+
load(): Promise<Registry>;
|
|
7
|
+
save(registry: Registry): Promise<void>;
|
|
8
|
+
list(): Promise<Registry['projects']>;
|
|
9
|
+
get(name: string): Promise<ProjectEntry | undefined>;
|
|
10
|
+
has(name: string): Promise<boolean>;
|
|
11
|
+
add(name: string, entry: ProjectEntry, options?: {
|
|
12
|
+
overwrite?: boolean;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
update(name: string, patch: Partial<ProjectEntry>): Promise<ProjectEntry>;
|
|
15
|
+
remove(name: string): Promise<void>;
|
|
16
|
+
}
|