@config-bound/cli 0.1.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/.turbo/turbo-build.log +4 -0
- package/.turbo/turbo-format$colon$ci.log +6 -0
- package/.turbo/turbo-lint$colon$ci.log +4 -0
- package/.turbo/turbo-test.log +19 -0
- package/CHANGELOG.md +15 -0
- package/README.md +66 -0
- package/bin/configbound.js +3 -0
- package/dist/cli.module.d.ts +3 -0
- package/dist/cli.module.d.ts.map +1 -0
- package/dist/cli.module.js +29 -0
- package/dist/cli.module.js.map +1 -0
- package/dist/commands/export.command.d.ts +30 -0
- package/dist/commands/export.command.d.ts.map +1 -0
- package/dist/commands/export.command.js +226 -0
- package/dist/commands/export.command.js.map +1 -0
- package/dist/commands/list.command.d.ts +13 -0
- package/dist/commands/list.command.d.ts.map +1 -0
- package/dist/commands/list.command.js +93 -0
- package/dist/commands/list.command.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +17 -0
- package/dist/main.js.map +1 -0
- package/dist/services/config-discovery.service.d.ts +15 -0
- package/dist/services/config-discovery.service.d.ts.map +1 -0
- package/dist/services/config-discovery.service.js +191 -0
- package/dist/services/config-discovery.service.js.map +1 -0
- package/dist/services/config-discovery.service.spec.d.ts +2 -0
- package/dist/services/config-discovery.service.spec.d.ts.map +1 -0
- package/dist/services/config-discovery.service.spec.js +137 -0
- package/dist/services/config-discovery.service.spec.js.map +1 -0
- package/dist/services/config-loader.service.d.ts +13 -0
- package/dist/services/config-loader.service.d.ts.map +1 -0
- package/dist/services/config-loader.service.js +241 -0
- package/dist/services/config-loader.service.js.map +1 -0
- package/dist/services/file-writer.service.d.ts +6 -0
- package/dist/services/file-writer.service.d.ts.map +1 -0
- package/dist/services/file-writer.service.js +38 -0
- package/dist/services/file-writer.service.js.map +1 -0
- package/dist/services/file-writer.service.spec.d.ts +2 -0
- package/dist/services/file-writer.service.spec.d.ts.map +1 -0
- package/dist/services/file-writer.service.spec.js +98 -0
- package/dist/services/file-writer.service.spec.js.map +1 -0
- package/dist/services/schema-export.service.d.ts +14 -0
- package/dist/services/schema-export.service.d.ts.map +1 -0
- package/dist/services/schema-export.service.js +58 -0
- package/dist/services/schema-export.service.js.map +1 -0
- package/dist/services/schema-export.service.spec.d.ts +2 -0
- package/dist/services/schema-export.service.spec.d.ts.map +1 -0
- package/dist/services/schema-export.service.spec.js +69 -0
- package/dist/services/schema-export.service.spec.js.map +1 -0
- package/eslint.config.mjs +5 -0
- package/jest.config.js +39 -0
- package/package.json +62 -0
- package/src/cli.module.ts +21 -0
- package/src/commands/export.command.ts +253 -0
- package/src/commands/list.command.ts +108 -0
- package/src/main.ts +19 -0
- package/src/services/config-discovery.service.spec.ts +209 -0
- package/src/services/config-discovery.service.ts +237 -0
- package/src/services/config-loader.service.ts +379 -0
- package/src/services/file-writer.service.spec.ts +139 -0
- package/src/services/file-writer.service.ts +32 -0
- package/src/services/schema-export.service.spec.ts +124 -0
- package/src/services/schema-export.service.ts +85 -0
- package/tsconfig.json +10 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
> @config-bound/cli@0.1.0 test
|
|
3
|
+
> NODE_OPTIONS='--experimental-vm-modules' jest
|
|
4
|
+
|
|
5
|
+
(node:2957) ExperimentalWarning: VM Modules is an experimental feature and might change at any time
|
|
6
|
+
(Use `node --trace-warnings ...` to show where the warning was created)
|
|
7
|
+
PASS src/services/file-writer.service.spec.ts
|
|
8
|
+
(node:2959) ExperimentalWarning: VM Modules is an experimental feature and might change at any time
|
|
9
|
+
(Use `node --trace-warnings ...` to show where the warning was created)
|
|
10
|
+
PASS src/services/schema-export.service.spec.ts
|
|
11
|
+
(node:2956) ExperimentalWarning: VM Modules is an experimental feature and might change at any time
|
|
12
|
+
(Use `node --trace-warnings ...` to show where the warning was created)
|
|
13
|
+
PASS src/services/config-discovery.service.spec.ts (17.134 s)
|
|
14
|
+
|
|
15
|
+
Test Suites: 3 passed, 3 total
|
|
16
|
+
Tests: 27 passed, 27 total
|
|
17
|
+
Snapshots: 0 total
|
|
18
|
+
Time: 18.949 s
|
|
19
|
+
Ran all test suites.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @config-bound/cli
|
|
2
|
+
|
|
3
|
+
## 0.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3c2cf21: Add a CLI to export and interact with configuration schemas
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies [de1dc3b]
|
|
12
|
+
- Updated dependencies [3c2cf21]
|
|
13
|
+
- Updated dependencies [dca5c72]
|
|
14
|
+
- @config-bound/config-bound@0.1.0
|
|
15
|
+
- @config-bound/schema-export@0.1.0
|
package/README.md
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# @config-bound/cli
|
|
2
|
+
|
|
3
|
+
CLI tool for ConfigBound schema export and management.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @config-bound/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### List discovered configs
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
configbound list [path]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Discovers all ConfigBound configurations in your project.
|
|
20
|
+
|
|
21
|
+
**Options:**
|
|
22
|
+
|
|
23
|
+
- `[path]` - Directory to search (default: current directory)
|
|
24
|
+
- `--recursive, -r` - Search subdirectories
|
|
25
|
+
|
|
26
|
+
**Example:**
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx configbound list ./src
|
|
30
|
+
npx configbound list --recursive
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Export schema
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npx configbound export [options]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Exports ConfigBound schema in various formats.
|
|
40
|
+
|
|
41
|
+
**Smart Discovery:**
|
|
42
|
+
|
|
43
|
+
- If no `--config` is specified, automatically discovers configs in your project
|
|
44
|
+
- Auto-selects if only one config is found
|
|
45
|
+
- Prompts for selection if multiple configs exist
|
|
46
|
+
- Works with any file structure - finds `ConfigBound.createConfig()` calls anywhere
|
|
47
|
+
|
|
48
|
+
## Development
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Install dependencies
|
|
52
|
+
npm install
|
|
53
|
+
|
|
54
|
+
# Build
|
|
55
|
+
npm run build
|
|
56
|
+
|
|
57
|
+
# Run in dev mode
|
|
58
|
+
npm run dev -- list
|
|
59
|
+
|
|
60
|
+
# Run tests
|
|
61
|
+
npm test
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## License
|
|
65
|
+
|
|
66
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.module.d.ts","sourceRoot":"","sources":["../src/cli.module.ts"],"names":[],"mappings":"AAQA,qBAUa,SAAS;CAAG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Module } from '@nestjs/common';
|
|
8
|
+
import { ListCommand } from './commands/list.command.js';
|
|
9
|
+
import { ExportCommand } from './commands/export.command.js';
|
|
10
|
+
import { ConfigDiscoveryService } from './services/config-discovery.service.js';
|
|
11
|
+
import { ConfigLoaderService } from './services/config-loader.service.js';
|
|
12
|
+
import { SchemaExportService } from './services/schema-export.service.js';
|
|
13
|
+
import { FileWriterService } from './services/file-writer.service.js';
|
|
14
|
+
let CliModule = class CliModule {
|
|
15
|
+
};
|
|
16
|
+
CliModule = __decorate([
|
|
17
|
+
Module({
|
|
18
|
+
providers: [
|
|
19
|
+
ListCommand,
|
|
20
|
+
ExportCommand,
|
|
21
|
+
ConfigDiscoveryService,
|
|
22
|
+
ConfigLoaderService,
|
|
23
|
+
SchemaExportService,
|
|
24
|
+
FileWriterService
|
|
25
|
+
]
|
|
26
|
+
})
|
|
27
|
+
], CliModule);
|
|
28
|
+
export { CliModule };
|
|
29
|
+
//# sourceMappingURL=cli.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.module.js","sourceRoot":"","sources":["../src/cli.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAY/D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IAVrB,MAAM,CAAC;QACN,SAAS,EAAE;YACT,WAAW;YACX,aAAa;YACb,sBAAsB;YACtB,mBAAmB;YACnB,mBAAmB;YACnB,iBAAiB;SAClB;KACF,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
import { ConfigLoaderService } from '../services/config-loader.service.js';
|
|
3
|
+
import { ConfigDiscoveryService } from '../services/config-discovery.service.js';
|
|
4
|
+
import { SchemaExportService, type ExportFormat } from '../services/schema-export.service.js';
|
|
5
|
+
import { FileWriterService } from '../services/file-writer.service.js';
|
|
6
|
+
interface ExportCommandOptions {
|
|
7
|
+
config?: string;
|
|
8
|
+
format: ExportFormat;
|
|
9
|
+
output?: string;
|
|
10
|
+
includeOmitted?: boolean;
|
|
11
|
+
pretty?: boolean;
|
|
12
|
+
name?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class ExportCommand extends CommandRunner {
|
|
15
|
+
private readonly loaderService;
|
|
16
|
+
private readonly discoveryService;
|
|
17
|
+
private readonly exportService;
|
|
18
|
+
private readonly writerService;
|
|
19
|
+
constructor(loaderService: ConfigLoaderService, discoveryService: ConfigDiscoveryService, exportService: SchemaExportService, writerService: FileWriterService);
|
|
20
|
+
run(_passedParams: string[], options?: ExportCommandOptions): Promise<void>;
|
|
21
|
+
private discoverAndSelect;
|
|
22
|
+
parseConfig(val: string): string;
|
|
23
|
+
parseFormat(val: string): ExportFormat;
|
|
24
|
+
parseOutput(val: string): string;
|
|
25
|
+
parseIncludeOmitted(): boolean;
|
|
26
|
+
parsePretty(val: string): boolean;
|
|
27
|
+
parseName(val: string): string;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=export.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.command.d.ts","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EACL,mBAAmB,EACnB,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAIvE,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAIa,aAAc,SAAQ,aAAa;IAE5C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,aAAa,EAAE,mBAAmB,EAClC,gBAAgB,EAAE,sBAAsB,EACxC,aAAa,EAAE,mBAAmB,EAClC,aAAa,EAAE,iBAAiB;IAK7C,GAAG,CACP,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC;YAgEF,iBAAiB;IAoG/B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAShC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;IActC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQhC,mBAAmB,IAAI,OAAO;IAS9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQjC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/B"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Command, CommandRunner, Option } from 'nest-commander';
|
|
11
|
+
import { ConfigLoaderService } from '../services/config-loader.service.js';
|
|
12
|
+
import { ConfigDiscoveryService } from '../services/config-discovery.service.js';
|
|
13
|
+
import { SchemaExportService } from '../services/schema-export.service.js';
|
|
14
|
+
import { FileWriterService } from '../services/file-writer.service.js';
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import * as readline from 'readline';
|
|
17
|
+
let ExportCommand = class ExportCommand extends CommandRunner {
|
|
18
|
+
loaderService;
|
|
19
|
+
discoveryService;
|
|
20
|
+
exportService;
|
|
21
|
+
writerService;
|
|
22
|
+
constructor(loaderService, discoveryService, exportService, writerService) {
|
|
23
|
+
super();
|
|
24
|
+
this.loaderService = loaderService;
|
|
25
|
+
this.discoveryService = discoveryService;
|
|
26
|
+
this.exportService = exportService;
|
|
27
|
+
this.writerService = writerService;
|
|
28
|
+
}
|
|
29
|
+
async run(_passedParams, options) {
|
|
30
|
+
try {
|
|
31
|
+
let configPath;
|
|
32
|
+
let exportName;
|
|
33
|
+
if (!options?.config) {
|
|
34
|
+
const discovered = await this.discoverAndSelect();
|
|
35
|
+
if (!discovered) {
|
|
36
|
+
console.log(chalk.yellow('Export cancelled.'));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
configPath = discovered.filePath;
|
|
40
|
+
exportName =
|
|
41
|
+
discovered.exportName === 'default'
|
|
42
|
+
? undefined
|
|
43
|
+
: discovered.exportName;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
configPath = options.config;
|
|
47
|
+
exportName = options.name;
|
|
48
|
+
}
|
|
49
|
+
const format = options?.format || 'json';
|
|
50
|
+
const includeOmitted = options?.includeOmitted || false;
|
|
51
|
+
const pretty = options?.pretty !== false;
|
|
52
|
+
const output = options?.output;
|
|
53
|
+
console.log(chalk.blue('Loading configuration...'));
|
|
54
|
+
const config = await this.loaderService.loadConfig(configPath, exportName);
|
|
55
|
+
console.log(chalk.green(`Loaded config: ${chalk.bold(config.name)}`));
|
|
56
|
+
const exportedSchema = this.exportService.exportToString(config.name, config.sections, config.instance, {
|
|
57
|
+
format,
|
|
58
|
+
includeOmitted,
|
|
59
|
+
pretty
|
|
60
|
+
});
|
|
61
|
+
if (output) {
|
|
62
|
+
this.writerService.writeToFile(output, exportedSchema);
|
|
63
|
+
console.log(chalk.green(`Schema exported to: ${output}`));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.log(chalk.blue('\nExported schema:\n'));
|
|
67
|
+
this.writerService.writeToStdout(exportedSchema);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (error instanceof Error) {
|
|
72
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.error(chalk.red(`Error: ${String(error)}`));
|
|
76
|
+
}
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async discoverAndSelect() {
|
|
81
|
+
const startTime = Date.now();
|
|
82
|
+
console.log(chalk.blue('Searching for ConfigBound configurations...'));
|
|
83
|
+
const configs = await this.discoveryService.discoverConfigs(process.cwd(), true);
|
|
84
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(2);
|
|
85
|
+
console.log(chalk.gray(`Search completed in ${elapsed}s`));
|
|
86
|
+
if (configs.length === 0) {
|
|
87
|
+
console.log(chalk.yellow('\nNo ConfigBound configurations found in project.'));
|
|
88
|
+
console.log(chalk.gray('Tip: Use --config <path> to specify a config file explicitly.'));
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
if (configs.length === 1) {
|
|
92
|
+
const selected = configs[0];
|
|
93
|
+
const exportType = selected.isDefault ? 'default' : 'named';
|
|
94
|
+
const relativePath = selected.filePath.replace(process.cwd() + '/', '');
|
|
95
|
+
console.log(chalk.green(`\nFound 1 configuration - auto-selected: ${chalk.bold(selected.configName || 'unnamed')} (${exportType} export: ${selected.exportName})`));
|
|
96
|
+
console.log(chalk.gray(` from ${relativePath}\n`));
|
|
97
|
+
return {
|
|
98
|
+
filePath: selected.filePath,
|
|
99
|
+
exportName: selected.exportName
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
console.log(chalk.green(`\nFound ${configs.length} configurations:\n`));
|
|
103
|
+
configs.forEach((config, index) => {
|
|
104
|
+
const exportType = config.isDefault ? '(default)' : '(named)';
|
|
105
|
+
const configNamePart = config.configName
|
|
106
|
+
? chalk.bold(config.configName)
|
|
107
|
+
: chalk.gray('unnamed');
|
|
108
|
+
const relativePath = config.filePath.replace(process.cwd() + '/', '');
|
|
109
|
+
console.log(`${chalk.cyan((index + 1).toString().padStart(2))}. ${configNamePart} ${chalk.gray(exportType + ' - ' + config.exportName)}`);
|
|
110
|
+
console.log(` ${chalk.gray(relativePath)}`);
|
|
111
|
+
});
|
|
112
|
+
const rl = readline.createInterface({
|
|
113
|
+
input: process.stdin,
|
|
114
|
+
output: process.stdout
|
|
115
|
+
});
|
|
116
|
+
const answer = await new Promise((resolve) => {
|
|
117
|
+
rl.question(chalk.yellow(`\nSelect configuration (1-${configs.length}) or Ctrl+C to cancel: `), (answer) => {
|
|
118
|
+
rl.close();
|
|
119
|
+
resolve(answer);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
const selectedIndex = parseInt(answer, 10) - 1;
|
|
123
|
+
if (isNaN(selectedIndex) ||
|
|
124
|
+
selectedIndex < 0 ||
|
|
125
|
+
selectedIndex >= configs.length) {
|
|
126
|
+
console.log(chalk.red('Invalid selection.'));
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const selected = configs[selectedIndex];
|
|
130
|
+
console.log();
|
|
131
|
+
return {
|
|
132
|
+
filePath: selected.filePath,
|
|
133
|
+
exportName: selected.exportName
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
parseConfig(val) {
|
|
137
|
+
return val;
|
|
138
|
+
}
|
|
139
|
+
parseFormat(val) {
|
|
140
|
+
const validFormats = ['json', 'yaml', 'env'];
|
|
141
|
+
if (!validFormats.includes(val)) {
|
|
142
|
+
throw new Error(`Invalid format: ${val}. Valid formats: ${validFormats.join(', ')}`);
|
|
143
|
+
}
|
|
144
|
+
return val;
|
|
145
|
+
}
|
|
146
|
+
parseOutput(val) {
|
|
147
|
+
return val;
|
|
148
|
+
}
|
|
149
|
+
parseIncludeOmitted() {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
parsePretty(val) {
|
|
153
|
+
return val !== 'false';
|
|
154
|
+
}
|
|
155
|
+
parseName(val) {
|
|
156
|
+
return val;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
__decorate([
|
|
160
|
+
Option({
|
|
161
|
+
flags: '-c, --config <path>',
|
|
162
|
+
description: 'Path to config file'
|
|
163
|
+
}),
|
|
164
|
+
__metadata("design:type", Function),
|
|
165
|
+
__metadata("design:paramtypes", [String]),
|
|
166
|
+
__metadata("design:returntype", String)
|
|
167
|
+
], ExportCommand.prototype, "parseConfig", null);
|
|
168
|
+
__decorate([
|
|
169
|
+
Option({
|
|
170
|
+
flags: '-f, --format <format>',
|
|
171
|
+
description: 'Output format: json, yaml, env (default: json)',
|
|
172
|
+
defaultValue: 'json'
|
|
173
|
+
}),
|
|
174
|
+
__metadata("design:type", Function),
|
|
175
|
+
__metadata("design:paramtypes", [String]),
|
|
176
|
+
__metadata("design:returntype", String)
|
|
177
|
+
], ExportCommand.prototype, "parseFormat", null);
|
|
178
|
+
__decorate([
|
|
179
|
+
Option({
|
|
180
|
+
flags: '-o, --output <path>',
|
|
181
|
+
description: 'Output file path (default: stdout)'
|
|
182
|
+
}),
|
|
183
|
+
__metadata("design:type", Function),
|
|
184
|
+
__metadata("design:paramtypes", [String]),
|
|
185
|
+
__metadata("design:returntype", String)
|
|
186
|
+
], ExportCommand.prototype, "parseOutput", null);
|
|
187
|
+
__decorate([
|
|
188
|
+
Option({
|
|
189
|
+
flags: '--include-omitted',
|
|
190
|
+
description: 'Include elements marked with omitFromSchema: true'
|
|
191
|
+
}),
|
|
192
|
+
__metadata("design:type", Function),
|
|
193
|
+
__metadata("design:paramtypes", []),
|
|
194
|
+
__metadata("design:returntype", Boolean)
|
|
195
|
+
], ExportCommand.prototype, "parseIncludeOmitted", null);
|
|
196
|
+
__decorate([
|
|
197
|
+
Option({
|
|
198
|
+
flags: '--pretty [boolean]',
|
|
199
|
+
description: 'Pretty-print JSON output (default: true)',
|
|
200
|
+
defaultValue: true
|
|
201
|
+
}),
|
|
202
|
+
__metadata("design:type", Function),
|
|
203
|
+
__metadata("design:paramtypes", [String]),
|
|
204
|
+
__metadata("design:returntype", Boolean)
|
|
205
|
+
], ExportCommand.prototype, "parsePretty", null);
|
|
206
|
+
__decorate([
|
|
207
|
+
Option({
|
|
208
|
+
flags: '--name <name>',
|
|
209
|
+
description: 'Export named variable when file has multiple exports'
|
|
210
|
+
}),
|
|
211
|
+
__metadata("design:type", Function),
|
|
212
|
+
__metadata("design:paramtypes", [String]),
|
|
213
|
+
__metadata("design:returntype", String)
|
|
214
|
+
], ExportCommand.prototype, "parseName", null);
|
|
215
|
+
ExportCommand = __decorate([
|
|
216
|
+
Command({
|
|
217
|
+
name: 'export',
|
|
218
|
+
description: 'Export ConfigBound schema in various formats'
|
|
219
|
+
}),
|
|
220
|
+
__metadata("design:paramtypes", [ConfigLoaderService,
|
|
221
|
+
ConfigDiscoveryService,
|
|
222
|
+
SchemaExportService,
|
|
223
|
+
FileWriterService])
|
|
224
|
+
], ExportCommand);
|
|
225
|
+
export { ExportCommand };
|
|
226
|
+
//# sourceMappingURL=export.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export.command.js","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
import { ConfigDiscoveryService } from '../services/config-discovery.service.js';
|
|
3
|
+
interface ListCommandOptions {
|
|
4
|
+
recursive?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class ListCommand extends CommandRunner {
|
|
7
|
+
private readonly discoveryService;
|
|
8
|
+
constructor(discoveryService: ConfigDiscoveryService);
|
|
9
|
+
run(passedParams: string[], options?: ListCommandOptions): Promise<void>;
|
|
10
|
+
parseRecursive(val: string): boolean;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=list.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.command.d.ts","sourceRoot":"","sources":["../../src/commands/list.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAIjF,UAAU,kBAAkB;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAQa,WAAY,SAAQ,aAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,sBAAsB;IAI/D,GAAG,CACP,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC;IA+EhB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAGrC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Command, CommandRunner, Option } from 'nest-commander';
|
|
11
|
+
import { ConfigDiscoveryService } from '../services/config-discovery.service.js';
|
|
12
|
+
import chalk from 'chalk';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
let ListCommand = class ListCommand extends CommandRunner {
|
|
15
|
+
discoveryService;
|
|
16
|
+
constructor(discoveryService) {
|
|
17
|
+
super();
|
|
18
|
+
this.discoveryService = discoveryService;
|
|
19
|
+
}
|
|
20
|
+
async run(passedParams, options) {
|
|
21
|
+
const searchPath = passedParams[0] || process.cwd();
|
|
22
|
+
const recursive = options?.recursive !== false;
|
|
23
|
+
try {
|
|
24
|
+
console.log(chalk.blue(`Searching for ConfigBound configurations in: ${searchPath}`));
|
|
25
|
+
console.log(chalk.gray(`Recursive: ${recursive ? 'yes' : 'no'}`));
|
|
26
|
+
console.log();
|
|
27
|
+
const configs = await this.discoveryService.discoverConfigs(searchPath, recursive);
|
|
28
|
+
if (configs.length === 0) {
|
|
29
|
+
console.log(chalk.yellow('No ConfigBound configurations found.'));
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.log(chalk.green(`Found ${configs.length} ConfigBound configuration${configs.length === 1 ? '' : 's'}:`));
|
|
33
|
+
console.log();
|
|
34
|
+
const groupedByFile = configs.reduce((acc, config) => {
|
|
35
|
+
if (!acc[config.filePath]) {
|
|
36
|
+
acc[config.filePath] = [];
|
|
37
|
+
}
|
|
38
|
+
acc[config.filePath].push(config);
|
|
39
|
+
return acc;
|
|
40
|
+
}, {});
|
|
41
|
+
for (const [filePath, fileConfigs] of Object.entries(groupedByFile)) {
|
|
42
|
+
const relativePath = path.relative(process.cwd(), filePath);
|
|
43
|
+
console.log(chalk.cyan(`📄 ${relativePath}`));
|
|
44
|
+
for (const config of fileConfigs) {
|
|
45
|
+
const exportType = config.isDefault
|
|
46
|
+
? chalk.gray('(default)')
|
|
47
|
+
: chalk.gray('(named)');
|
|
48
|
+
const configNamePart = config.configName
|
|
49
|
+
? chalk.magenta(` - ${config.configName}`)
|
|
50
|
+
: '';
|
|
51
|
+
const linePart = chalk.gray(`:${config.lineNumber}`);
|
|
52
|
+
console.log(` ${chalk.white(config.exportName)} ${exportType}${configNamePart}${linePart}`);
|
|
53
|
+
}
|
|
54
|
+
console.log();
|
|
55
|
+
}
|
|
56
|
+
console.log(chalk.gray('Tip: Use `configbound export --config <file> --name <export>` to export a specific configuration.'));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof Error) {
|
|
60
|
+
console.error(chalk.red(`Error: ${error.message}`));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.error(chalk.red(`Error: ${String(error)}`));
|
|
64
|
+
}
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
parseRecursive(val) {
|
|
69
|
+
return val !== 'false';
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
__decorate([
|
|
73
|
+
Option({
|
|
74
|
+
flags: '-r, --recursive [boolean]',
|
|
75
|
+
description: 'Search subdirectories (default: true)'
|
|
76
|
+
}),
|
|
77
|
+
__metadata("design:type", Function),
|
|
78
|
+
__metadata("design:paramtypes", [String]),
|
|
79
|
+
__metadata("design:returntype", Boolean)
|
|
80
|
+
], ListCommand.prototype, "parseRecursive", null);
|
|
81
|
+
ListCommand = __decorate([
|
|
82
|
+
Command({
|
|
83
|
+
name: 'list',
|
|
84
|
+
description: 'List all discovered ConfigBound configurations',
|
|
85
|
+
arguments: '[path]',
|
|
86
|
+
argsDescription: {
|
|
87
|
+
path: 'Directory to search (default: current directory)'
|
|
88
|
+
}
|
|
89
|
+
}),
|
|
90
|
+
__metadata("design:paramtypes", [ConfigDiscoveryService])
|
|
91
|
+
], ListCommand);
|
|
92
|
+
export { ListCommand };
|
|
93
|
+
//# sourceMappingURL=list.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.command.js","sourceRoot":"","sources":["../../src/commands/list.command.ts"],"names":[],"mappings":"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"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { CommandFactory } from 'nest-commander';
|
|
3
|
+
import { CliModule } from './cli.module.js';
|
|
4
|
+
async function bootstrap() {
|
|
5
|
+
await CommandFactory.run(CliModule, {
|
|
6
|
+
logger: false,
|
|
7
|
+
errorHandler: (err) => {
|
|
8
|
+
if (err && typeof err === 'object' && 'code' in err && err.code === 'commander.help') {
|
|
9
|
+
process.exit(0);
|
|
10
|
+
}
|
|
11
|
+
console.error('Unexpected error:', err);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
bootstrap();
|
|
17
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,KAAK,UAAU,SAAS;IACtB,MAAM,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE;QAClC,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;YACpB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface DiscoveredConfig {
|
|
2
|
+
filePath: string;
|
|
3
|
+
exportName: string;
|
|
4
|
+
isDefault: boolean;
|
|
5
|
+
configName?: string;
|
|
6
|
+
lineNumber: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class ConfigDiscoveryService {
|
|
9
|
+
discoverConfigs(searchPath: string, recursive?: boolean): Promise<DiscoveredConfig[]>;
|
|
10
|
+
private extractConfigsFromFile;
|
|
11
|
+
private isConfigBoundCreateConfig;
|
|
12
|
+
private extractConfigName;
|
|
13
|
+
private findTypeScriptFiles;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=config-discovery.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-discovery.service.d.ts","sourceRoot":"","sources":["../../src/services/config-discovery.service.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBACa,sBAAsB;IAC3B,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,OAAc,GACxB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsC9B,OAAO,CAAC,sBAAsB;IA4D9B,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;CA+D5B"}
|