chkit 0.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -0
- package/dist/bin/chkit.d.ts +3 -0
- package/dist/bin/chkit.d.ts.map +1 -0
- package/dist/bin/chkit.js +304 -0
- package/dist/bin/chkit.js.map +1 -0
- package/dist/bin/command-registry.d.ts +34 -0
- package/dist/bin/command-registry.d.ts.map +1 -0
- package/dist/bin/command-registry.js +87 -0
- package/dist/bin/command-registry.js.map +1 -0
- package/dist/bin/commands/check.d.ts +3 -0
- package/dist/bin/commands/check.d.ts.map +1 -0
- package/dist/bin/commands/check.js +131 -0
- package/dist/bin/commands/check.js.map +1 -0
- package/dist/bin/commands/codegen.d.ts +2 -0
- package/dist/bin/commands/codegen.d.ts.map +1 -0
- package/dist/bin/commands/codegen.js +25 -0
- package/dist/bin/commands/codegen.js.map +1 -0
- package/dist/bin/commands/drift.d.ts +23 -0
- package/dist/bin/commands/drift.d.ts.map +1 -0
- package/dist/bin/commands/drift.js +179 -0
- package/dist/bin/commands/drift.js.map +1 -0
- package/dist/bin/commands/generate/output.d.ts +8 -0
- package/dist/bin/commands/generate/output.d.ts.map +1 -0
- package/dist/bin/commands/generate/output.js +58 -0
- package/dist/bin/commands/generate/output.js.map +1 -0
- package/dist/bin/commands/generate/plan-pipeline.d.ts +7 -0
- package/dist/bin/commands/generate/plan-pipeline.d.ts.map +1 -0
- package/dist/bin/commands/generate/plan-pipeline.js +143 -0
- package/dist/bin/commands/generate/plan-pipeline.js.map +1 -0
- package/dist/bin/commands/generate/rename-mappings.d.ts +29 -0
- package/dist/bin/commands/generate/rename-mappings.d.ts.map +1 -0
- package/dist/bin/commands/generate/rename-mappings.js +195 -0
- package/dist/bin/commands/generate/rename-mappings.js.map +1 -0
- package/dist/bin/commands/generate.d.ts +3 -0
- package/dist/bin/commands/generate.d.ts.map +1 -0
- package/dist/bin/commands/generate.js +154 -0
- package/dist/bin/commands/generate.js.map +1 -0
- package/dist/bin/commands/init.d.ts +2 -0
- package/dist/bin/commands/init.d.ts.map +1 -0
- package/dist/bin/commands/init.js +12 -0
- package/dist/bin/commands/init.js.map +1 -0
- package/dist/bin/commands/migrate.d.ts +3 -0
- package/dist/bin/commands/migrate.d.ts.map +1 -0
- package/dist/bin/commands/migrate.js +270 -0
- package/dist/bin/commands/migrate.js.map +1 -0
- package/dist/bin/commands/plugin-like.d.ts +38 -0
- package/dist/bin/commands/plugin-like.d.ts.map +1 -0
- package/dist/bin/commands/plugin-like.js +101 -0
- package/dist/bin/commands/plugin-like.js.map +1 -0
- package/dist/bin/commands/plugin.d.ts +3 -0
- package/dist/bin/commands/plugin.d.ts.map +1 -0
- package/dist/bin/commands/plugin.js +148 -0
- package/dist/bin/commands/plugin.js.map +1 -0
- package/dist/bin/commands/pull.d.ts +2 -0
- package/dist/bin/commands/pull.d.ts.map +1 -0
- package/dist/bin/commands/pull.js +25 -0
- package/dist/bin/commands/pull.js.map +1 -0
- package/dist/bin/commands/status.d.ts +3 -0
- package/dist/bin/commands/status.d.ts.map +1 -0
- package/dist/bin/commands/status.js +53 -0
- package/dist/bin/commands/status.js.map +1 -0
- package/dist/bin/commands/typegen.d.ts +2 -0
- package/dist/bin/commands/typegen.d.ts.map +1 -0
- package/dist/bin/commands/typegen.js +25 -0
- package/dist/bin/commands/typegen.js.map +1 -0
- package/dist/bin/config.d.ts +13 -0
- package/dist/bin/config.d.ts.map +1 -0
- package/dist/bin/config.js +39 -0
- package/dist/bin/config.js.map +1 -0
- package/dist/bin/global-flags.d.ts +16 -0
- package/dist/bin/global-flags.d.ts.map +1 -0
- package/dist/bin/global-flags.js +7 -0
- package/dist/bin/global-flags.js.map +1 -0
- package/dist/bin/help.d.ts +5 -0
- package/dist/bin/help.d.ts.map +1 -0
- package/dist/bin/help.js +84 -0
- package/dist/bin/help.js.map +1 -0
- package/dist/bin/internal-plugins/index.d.ts +3 -0
- package/dist/bin/internal-plugins/index.d.ts.map +1 -0
- package/dist/bin/internal-plugins/index.js +5 -0
- package/dist/bin/internal-plugins/index.js.map +1 -0
- package/dist/bin/internal-plugins/skill-hint.d.ts +16 -0
- package/dist/bin/internal-plugins/skill-hint.d.ts.map +1 -0
- package/dist/bin/internal-plugins/skill-hint.js +101 -0
- package/dist/bin/internal-plugins/skill-hint.js.map +1 -0
- package/dist/bin/journal-store.d.ts +13 -0
- package/dist/bin/journal-store.d.ts.map +1 -0
- package/dist/bin/journal-store.js +79 -0
- package/dist/bin/journal-store.js.map +1 -0
- package/dist/bin/json-output.d.ts +8 -0
- package/dist/bin/json-output.d.ts.map +1 -0
- package/dist/bin/json-output.js +21 -0
- package/dist/bin/json-output.js.map +1 -0
- package/dist/bin/lib.d.ts +8 -0
- package/dist/bin/lib.d.ts.map +1 -0
- package/dist/bin/lib.js +8 -0
- package/dist/bin/lib.js.map +1 -0
- package/dist/bin/migration-store.d.ts +22 -0
- package/dist/bin/migration-store.d.ts.map +1 -0
- package/dist/bin/migration-store.js +60 -0
- package/dist/bin/migration-store.js.map +1 -0
- package/dist/bin/plugin-runtime.d.ts +42 -0
- package/dist/bin/plugin-runtime.d.ts.map +1 -0
- package/dist/bin/plugin-runtime.js +298 -0
- package/dist/bin/plugin-runtime.js.map +1 -0
- package/dist/bin/safety-markers.d.ts +24 -0
- package/dist/bin/safety-markers.d.ts.map +1 -0
- package/dist/bin/safety-markers.js +94 -0
- package/dist/bin/safety-markers.js.map +1 -0
- package/dist/bin/schema-loader.d.ts +3 -0
- package/dist/bin/schema-loader.d.ts.map +1 -0
- package/dist/bin/schema-loader.js +6 -0
- package/dist/bin/schema-loader.js.map +1 -0
- package/dist/bin/table-scope.d.ts +39 -0
- package/dist/bin/table-scope.d.ts.map +1 -0
- package/dist/bin/table-scope.js +167 -0
- package/dist/bin/table-scope.js.map +1 -0
- package/dist/bin/version.d.ts +2 -0
- package/dist/bin/version.d.ts.map +1 -0
- package/dist/bin/version.js +5 -0
- package/dist/bin/version.js.map +1 -0
- package/dist/drift-diff.d.ts +8 -0
- package/dist/drift-diff.d.ts.map +1 -0
- package/dist/drift-diff.js +46 -0
- package/dist/drift-diff.js.map +1 -0
- package/dist/drift.d.ts +65 -0
- package/dist/drift.d.ts.map +1 -0
- package/dist/drift.js +204 -0
- package/dist/drift.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins.d.ts +142 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +11 -0
- package/dist/plugins.js.map +1 -0
- package/package.json +33 -0
package/README.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# chkit
|
|
2
|
+
|
|
3
|
+
ClickHouse schema and migration CLI for TypeScript projects.
|
|
4
|
+
|
|
5
|
+
Define your ClickHouse schema in TypeScript, generate migrations automatically, detect drift, and run CI checks -- all from a single CLI.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Schema-as-code** -- Define tables, views, and materialized views in TypeScript using a declarative DSL
|
|
10
|
+
- **Automatic migration generation** -- Diff your schema changes and generate timestamped SQL migrations with rename detection
|
|
11
|
+
- **Safe migrations** -- Destructive operations are flagged with risk levels and require explicit confirmation
|
|
12
|
+
- **Drift detection** -- Compare your local schema against a live ClickHouse instance to catch out-of-band changes
|
|
13
|
+
- **CI gate** -- Run `chkit check` to fail builds on pending migrations, checksum mismatches, or schema drift
|
|
14
|
+
- **TypeScript codegen** -- Generate row types and optional Zod schemas from your schema definitions (`@chkit/plugin-codegen`)
|
|
15
|
+
- **Schema pulling** -- Introspect an existing ClickHouse database into local schema files (`@chkit/plugin-pull`)
|
|
16
|
+
- **Data backfill** -- Time-windowed, checkpointed backfill operations with retry logic (`@chkit/plugin-backfill`)
|
|
17
|
+
- **JSON output** -- Every command supports `--json` for scripting and automation
|
|
18
|
+
|
|
19
|
+
## Install
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
bun add -d chkit
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Scaffold a new project
|
|
29
|
+
bunx chkit init
|
|
30
|
+
|
|
31
|
+
# Generate a migration from schema changes
|
|
32
|
+
bunx chkit generate --name add-users-table
|
|
33
|
+
|
|
34
|
+
# Preview and apply pending migrations
|
|
35
|
+
bunx chkit migrate --apply
|
|
36
|
+
|
|
37
|
+
# Check migration status
|
|
38
|
+
bunx chkit status
|
|
39
|
+
|
|
40
|
+
# Detect schema drift
|
|
41
|
+
bunx chkit drift
|
|
42
|
+
|
|
43
|
+
# CI gate (fails on pending migrations or drift)
|
|
44
|
+
bunx chkit check
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
All commands support `--json` for machine-readable output and `--config <path>` to specify a custom config file.
|
|
48
|
+
|
|
49
|
+
## Plugins
|
|
50
|
+
|
|
51
|
+
| Plugin | Description |
|
|
52
|
+
|--------|-------------|
|
|
53
|
+
| [`@chkit/plugin-codegen`](https://www.npmjs.com/package/@chkit/plugin-codegen) | Generate TypeScript row types and Zod schemas |
|
|
54
|
+
| [`@chkit/plugin-pull`](https://www.npmjs.com/package/@chkit/plugin-pull) | Pull schemas from a live ClickHouse instance |
|
|
55
|
+
| [`@chkit/plugin-backfill`](https://www.npmjs.com/package/@chkit/plugin-backfill) | Time-windowed data backfill with checkpoints |
|
|
56
|
+
| [`@chkit/plugin-obsessiondb`](https://www.npmjs.com/package/@chkit/plugin-obsessiondb) | Auto-rewrite Shared engines for ObsessionDB compatibility |
|
|
57
|
+
|
|
58
|
+
## AI Agent Skill
|
|
59
|
+
|
|
60
|
+
Install the chkit agent skill so AI coding assistants understand chkit:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npx skills add obsessiondb/chkit
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Documentation
|
|
67
|
+
|
|
68
|
+
See the [chkit documentation](https://chkit.obsessiondb.com).
|
|
69
|
+
|
|
70
|
+
## License
|
|
71
|
+
|
|
72
|
+
[MIT](../../LICENSE)
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
Sponsored by [ObsessionDB](https://obsessiondb.com)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chkit.d.ts","sourceRoot":"","sources":["../../src/bin/chkit.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { typedFlags } from '../plugins.js';
|
|
4
|
+
import { createCommandRegistry } from './command-registry.js';
|
|
5
|
+
import { generateCommand } from './commands/generate.js';
|
|
6
|
+
import { migrateCommand } from './commands/migrate.js';
|
|
7
|
+
import { statusCommand } from './commands/status.js';
|
|
8
|
+
import { driftCommand } from './commands/drift.js';
|
|
9
|
+
import { checkCommand } from './commands/check.js';
|
|
10
|
+
import { pluginCommand } from './commands/plugin.js';
|
|
11
|
+
import { cmdInit } from './commands/init.js';
|
|
12
|
+
import { loadConfig, resolveDirs } from './config.js';
|
|
13
|
+
import { GLOBAL_FLAGS } from './global-flags.js';
|
|
14
|
+
import { formatGlobalHelp, formatCommandHelp } from './help.js';
|
|
15
|
+
import { parseFlags, UnknownFlagError, MissingFlagValueError } from '@chkit/core';
|
|
16
|
+
import { loadPluginRuntime } from './plugin-runtime.js';
|
|
17
|
+
import { resolveTableScope, tableKeysFromDefinitions } from './table-scope.js';
|
|
18
|
+
import { loadSchemaDefinitions } from './schema-loader.js';
|
|
19
|
+
import { getInternalPlugins } from './internal-plugins/index.js';
|
|
20
|
+
import { CLI_VERSION } from './version.js';
|
|
21
|
+
const WELL_KNOWN_PLUGIN_COMMANDS = {
|
|
22
|
+
codegen: 'Codegen',
|
|
23
|
+
pull: 'Pull',
|
|
24
|
+
};
|
|
25
|
+
function extractConfigPath(argv) {
|
|
26
|
+
const idx = argv.indexOf('--config');
|
|
27
|
+
if (idx === -1)
|
|
28
|
+
return undefined;
|
|
29
|
+
return argv[idx + 1];
|
|
30
|
+
}
|
|
31
|
+
/** Strip global flags (--config, --json, --table) from argv, returning their values and the rest. */
|
|
32
|
+
function stripGlobalFlags(argv) {
|
|
33
|
+
const rest = [];
|
|
34
|
+
let jsonMode = false;
|
|
35
|
+
let tableSelector;
|
|
36
|
+
for (let i = 0; i < argv.length; i++) {
|
|
37
|
+
const token = argv[i];
|
|
38
|
+
if (token === '--json') {
|
|
39
|
+
jsonMode = true;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (token === '--config' && i + 1 < argv.length) {
|
|
43
|
+
i++;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (token === '--table' && i + 1 < argv.length) {
|
|
47
|
+
tableSelector = argv[i + 1];
|
|
48
|
+
i++;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
rest.push(token);
|
|
52
|
+
}
|
|
53
|
+
return { jsonMode, tableSelector, rest };
|
|
54
|
+
}
|
|
55
|
+
function exitIfNeeded() {
|
|
56
|
+
const code = typeof process.exitCode === 'number'
|
|
57
|
+
? process.exitCode
|
|
58
|
+
: process.exitCode
|
|
59
|
+
? Number(process.exitCode)
|
|
60
|
+
: 0;
|
|
61
|
+
if (Number.isFinite(code) && code > 0) {
|
|
62
|
+
process.exit(code);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function collectExtensions(runtime) {
|
|
66
|
+
return runtime.plugins.flatMap((p) => {
|
|
67
|
+
const extensions = p.plugin.extendCommands;
|
|
68
|
+
if (!extensions || extensions.length === 0)
|
|
69
|
+
return [];
|
|
70
|
+
return [{ pluginName: p.plugin.manifest.name, extensions }];
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function collectPluginCommands(runtime) {
|
|
74
|
+
return runtime.plugins.flatMap((p) => {
|
|
75
|
+
const commands = p.plugin.commands;
|
|
76
|
+
if (!commands || commands.length === 0)
|
|
77
|
+
return [];
|
|
78
|
+
return [{ pluginName: p.plugin.manifest.name, commands, manifestName: p.plugin.manifest.name }];
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async function main() {
|
|
82
|
+
const argv = process.argv.slice(2);
|
|
83
|
+
const commandName = argv[0];
|
|
84
|
+
if (!commandName || commandName === '-h' || commandName === '--help') {
|
|
85
|
+
const configPathArg = extractConfigPath(argv);
|
|
86
|
+
try {
|
|
87
|
+
const { config, path: configPath } = await loadConfig(configPathArg);
|
|
88
|
+
const pluginRuntime = await loadPluginRuntime({ config, configPath, cliVersion: CLI_VERSION });
|
|
89
|
+
const registry = createCommandRegistry({
|
|
90
|
+
coreCommands: [generateCommand, migrateCommand, statusCommand, driftCommand, checkCommand, pluginCommand],
|
|
91
|
+
globalFlags: GLOBAL_FLAGS,
|
|
92
|
+
pluginExtensions: collectExtensions(pluginRuntime),
|
|
93
|
+
pluginCommands: collectPluginCommands(pluginRuntime),
|
|
94
|
+
});
|
|
95
|
+
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
const registry = createCommandRegistry({
|
|
99
|
+
coreCommands: [generateCommand, migrateCommand, statusCommand, driftCommand, checkCommand, pluginCommand],
|
|
100
|
+
globalFlags: GLOBAL_FLAGS,
|
|
101
|
+
pluginExtensions: [],
|
|
102
|
+
pluginCommands: [],
|
|
103
|
+
});
|
|
104
|
+
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (commandName === '-v' || commandName === '--version') {
|
|
109
|
+
console.log(CLI_VERSION);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (commandName === 'init') {
|
|
113
|
+
await cmdInit();
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const configPathArg = extractConfigPath(argv);
|
|
117
|
+
const { config, path: configPath } = await loadConfig(configPathArg);
|
|
118
|
+
const pluginRuntime = await loadPluginRuntime({
|
|
119
|
+
config,
|
|
120
|
+
configPath,
|
|
121
|
+
cliVersion: CLI_VERSION,
|
|
122
|
+
internalPlugins: getInternalPlugins(),
|
|
123
|
+
});
|
|
124
|
+
const initCtx = {
|
|
125
|
+
command: commandName,
|
|
126
|
+
isInteractive: process.stdin.isTTY === true && process.stderr.isTTY === true,
|
|
127
|
+
jsonMode: argv.includes('--json'),
|
|
128
|
+
};
|
|
129
|
+
await pluginRuntime.runOnInit(initCtx);
|
|
130
|
+
_onComplete = (exitCode) => pluginRuntime.runOnComplete({ ...initCtx, exitCode });
|
|
131
|
+
const registry = createCommandRegistry({
|
|
132
|
+
coreCommands: [generateCommand, migrateCommand, statusCommand, driftCommand, checkCommand, pluginCommand],
|
|
133
|
+
globalFlags: GLOBAL_FLAGS,
|
|
134
|
+
pluginExtensions: collectExtensions(pluginRuntime),
|
|
135
|
+
pluginCommands: collectPluginCommands(pluginRuntime),
|
|
136
|
+
});
|
|
137
|
+
const resolved = registry.get(commandName);
|
|
138
|
+
if (!resolved) {
|
|
139
|
+
const wellKnown = WELL_KNOWN_PLUGIN_COMMANDS[commandName];
|
|
140
|
+
if (wellKnown) {
|
|
141
|
+
console.error(`${wellKnown} plugin is not configured. Add it to config.plugins first.`);
|
|
142
|
+
process.exitCode = 1;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
console.error(`Unknown command: ${commandName}`);
|
|
146
|
+
console.log('');
|
|
147
|
+
console.log(formatGlobalHelp(registry, CLI_VERSION));
|
|
148
|
+
process.exitCode = 1;
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (argv.includes('--help') || argv.includes('-h')) {
|
|
152
|
+
console.log(formatCommandHelp(resolved, registry.globalFlags));
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (resolved.isPlugin && !resolved.run) {
|
|
156
|
+
const argsAfterCommand = argv.slice(1);
|
|
157
|
+
let subcommandName;
|
|
158
|
+
if (resolved.subcommands) {
|
|
159
|
+
// Match against known subcommand names to avoid confusing flag values
|
|
160
|
+
// (e.g., config paths) with subcommand candidates
|
|
161
|
+
const matchedSub = resolved.subcommands.find((s) => argsAfterCommand.includes(s.name));
|
|
162
|
+
if (matchedSub) {
|
|
163
|
+
subcommandName = matchedSub.name;
|
|
164
|
+
}
|
|
165
|
+
else if (resolved.subcommands.length === 1) {
|
|
166
|
+
subcommandName = resolved.subcommands[0]?.name;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
console.log(formatCommandHelp(resolved, registry.globalFlags));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const allPluginFlags = registry.resolveFlags(commandName, subcommandName);
|
|
174
|
+
let flags;
|
|
175
|
+
try {
|
|
176
|
+
flags = parseFlags(argsAfterCommand, allPluginFlags);
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
if (error instanceof UnknownFlagError || error instanceof MissingFlagValueError) {
|
|
180
|
+
console.error(error.message);
|
|
181
|
+
process.exitCode = 1;
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
throw error;
|
|
185
|
+
}
|
|
186
|
+
const gf = typedFlags(flags, GLOBAL_FLAGS);
|
|
187
|
+
const jsonMode = gf['--json'] === true;
|
|
188
|
+
const tableSelector = gf['--table'];
|
|
189
|
+
let tableScope;
|
|
190
|
+
try {
|
|
191
|
+
const definitions = await loadSchemaDefinitions(config.schema);
|
|
192
|
+
tableScope = resolveTableScope(tableSelector, tableKeysFromDefinitions(definitions));
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
tableScope = resolveTableScope(tableSelector, []);
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
await pluginRuntime.runOnConfigLoaded({
|
|
199
|
+
command: commandName,
|
|
200
|
+
config,
|
|
201
|
+
configPath,
|
|
202
|
+
tableScope,
|
|
203
|
+
flags,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
208
|
+
if (jsonMode) {
|
|
209
|
+
console.log(JSON.stringify({ ok: false, error: message }));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
console.error(message);
|
|
213
|
+
}
|
|
214
|
+
process.exitCode = 2;
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const pluginName = resolved.pluginName ?? commandName;
|
|
218
|
+
const pluginCommandName = subcommandName ?? commandName;
|
|
219
|
+
const { printOutput } = await import('./json-output.js');
|
|
220
|
+
const exitCode = await pluginRuntime.runPluginCommand(pluginName, pluginCommandName, {
|
|
221
|
+
config,
|
|
222
|
+
configPath,
|
|
223
|
+
jsonMode,
|
|
224
|
+
tableScope,
|
|
225
|
+
args: [],
|
|
226
|
+
flags,
|
|
227
|
+
print(value) {
|
|
228
|
+
printOutput(value, jsonMode);
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
if (exitCode !== 0)
|
|
232
|
+
process.exitCode = exitCode;
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
// For the 'plugin' command, use lenient flag extraction since plugin-specific
|
|
236
|
+
// flags are handled by the plugin's own parser
|
|
237
|
+
if (commandName === 'plugin') {
|
|
238
|
+
const { jsonMode, tableSelector } = stripGlobalFlags(argv.slice(1));
|
|
239
|
+
const flags = {};
|
|
240
|
+
if (jsonMode)
|
|
241
|
+
flags['--json'] = true;
|
|
242
|
+
if (tableSelector)
|
|
243
|
+
flags['--table'] = tableSelector;
|
|
244
|
+
const dirs = resolveDirs(config);
|
|
245
|
+
if (!resolved.run)
|
|
246
|
+
throw new Error(`Command '${commandName}' has no run handler`);
|
|
247
|
+
await resolved.run({
|
|
248
|
+
command: commandName,
|
|
249
|
+
flags,
|
|
250
|
+
config,
|
|
251
|
+
configPath,
|
|
252
|
+
dirs,
|
|
253
|
+
pluginRuntime,
|
|
254
|
+
});
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
const allFlags = registry.resolveFlags(commandName);
|
|
258
|
+
let flags;
|
|
259
|
+
try {
|
|
260
|
+
flags = parseFlags(argv.slice(1), allFlags);
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
if (error instanceof UnknownFlagError || error instanceof MissingFlagValueError) {
|
|
264
|
+
console.error(error.message);
|
|
265
|
+
process.exitCode = 1;
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
throw error;
|
|
269
|
+
}
|
|
270
|
+
const dirs = resolveDirs(config);
|
|
271
|
+
if (!resolved.run)
|
|
272
|
+
throw new Error(`Command '${commandName}' has no run handler`);
|
|
273
|
+
await resolved.run({
|
|
274
|
+
command: commandName,
|
|
275
|
+
flags,
|
|
276
|
+
config,
|
|
277
|
+
configPath,
|
|
278
|
+
dirs,
|
|
279
|
+
pluginRuntime,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
let _onComplete;
|
|
283
|
+
function resolveExitCode() {
|
|
284
|
+
if (typeof process.exitCode === 'number')
|
|
285
|
+
return process.exitCode;
|
|
286
|
+
return process.exitCode ? Number(process.exitCode) : 0;
|
|
287
|
+
}
|
|
288
|
+
main()
|
|
289
|
+
.then(async () => {
|
|
290
|
+
const code = resolveExitCode();
|
|
291
|
+
await _onComplete?.(code);
|
|
292
|
+
exitIfNeeded();
|
|
293
|
+
})
|
|
294
|
+
.catch(async (error) => {
|
|
295
|
+
try {
|
|
296
|
+
await _onComplete?.(1);
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
// onComplete errors must not mask the original error
|
|
300
|
+
}
|
|
301
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
302
|
+
process.exit(1);
|
|
303
|
+
});
|
|
304
|
+
//# sourceMappingURL=chkit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chkit.js","sourceRoot":"","sources":["../../src/bin/chkit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ChxPluginCommand, CommandDef, CommandExtension, FlagDef } from '../plugins.js';
|
|
2
|
+
export interface RegisteredCommand {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
flags: readonly FlagDef[];
|
|
6
|
+
pluginFlags: Array<{
|
|
7
|
+
pluginName: string;
|
|
8
|
+
flags: readonly FlagDef[];
|
|
9
|
+
}>;
|
|
10
|
+
isPlugin: boolean;
|
|
11
|
+
pluginName?: string;
|
|
12
|
+
subcommands?: RegisteredCommand[];
|
|
13
|
+
run: CommandDef['run'] | null;
|
|
14
|
+
}
|
|
15
|
+
export interface CommandRegistry {
|
|
16
|
+
commands: RegisteredCommand[];
|
|
17
|
+
globalFlags: readonly FlagDef[];
|
|
18
|
+
get(name: string): RegisteredCommand | undefined;
|
|
19
|
+
resolveFlags(name: string, subcommand?: string): FlagDef[];
|
|
20
|
+
}
|
|
21
|
+
export declare function createCommandRegistry(input: {
|
|
22
|
+
coreCommands: CommandDef[];
|
|
23
|
+
globalFlags: readonly FlagDef[];
|
|
24
|
+
pluginExtensions: Array<{
|
|
25
|
+
pluginName: string;
|
|
26
|
+
extensions: CommandExtension[];
|
|
27
|
+
}>;
|
|
28
|
+
pluginCommands: Array<{
|
|
29
|
+
pluginName: string;
|
|
30
|
+
commands: ChxPluginCommand[];
|
|
31
|
+
manifestName: string;
|
|
32
|
+
}>;
|
|
33
|
+
}): CommandRegistry;
|
|
34
|
+
//# sourceMappingURL=command-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/bin/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAE5F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;IACzB,WAAW,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,CAAC,CAAA;IACrE,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACjC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,WAAW,EAAE,SAAS,OAAO,EAAE,CAAA;IAC/B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAA;IAChD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;CAC3D;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,YAAY,EAAE,UAAU,EAAE,CAAA;IAC1B,WAAW,EAAE,SAAS,OAAO,EAAE,CAAA;IAC/B,gBAAgB,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC,CAAA;IAC/E,cAAc,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClG,GAAG,eAAe,CAwFlB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export function createCommandRegistry(input) {
|
|
2
|
+
const commands = [];
|
|
3
|
+
const byName = new Map();
|
|
4
|
+
for (const cmd of input.coreCommands) {
|
|
5
|
+
const registered = {
|
|
6
|
+
name: cmd.name,
|
|
7
|
+
description: cmd.description,
|
|
8
|
+
flags: cmd.flags,
|
|
9
|
+
pluginFlags: [],
|
|
10
|
+
isPlugin: false,
|
|
11
|
+
run: cmd.run,
|
|
12
|
+
};
|
|
13
|
+
commands.push(registered);
|
|
14
|
+
byName.set(cmd.name, registered);
|
|
15
|
+
}
|
|
16
|
+
for (const { pluginName, extensions } of input.pluginExtensions) {
|
|
17
|
+
for (const ext of extensions) {
|
|
18
|
+
const targets = Array.isArray(ext.command) ? ext.command : [ext.command];
|
|
19
|
+
for (const target of targets) {
|
|
20
|
+
const cmd = byName.get(target);
|
|
21
|
+
if (cmd) {
|
|
22
|
+
cmd.pluginFlags.push({ pluginName, flags: ext.flags });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
for (const { pluginName, commands: pluginCmds, manifestName } of input.pluginCommands) {
|
|
28
|
+
if (pluginCmds.length === 1 && pluginCmds[0]?.name === manifestName) {
|
|
29
|
+
const cmd = pluginCmds[0];
|
|
30
|
+
const registered = {
|
|
31
|
+
name: manifestName,
|
|
32
|
+
description: cmd.description ?? '',
|
|
33
|
+
flags: cmd.flags ?? [],
|
|
34
|
+
pluginFlags: [],
|
|
35
|
+
isPlugin: true,
|
|
36
|
+
pluginName,
|
|
37
|
+
run: null,
|
|
38
|
+
};
|
|
39
|
+
commands.push(registered);
|
|
40
|
+
byName.set(manifestName, registered);
|
|
41
|
+
}
|
|
42
|
+
else if (pluginCmds.length > 0) {
|
|
43
|
+
const subcommands = pluginCmds.map((cmd) => ({
|
|
44
|
+
name: cmd.name,
|
|
45
|
+
description: cmd.description ?? '',
|
|
46
|
+
flags: cmd.flags ?? [],
|
|
47
|
+
pluginFlags: [],
|
|
48
|
+
isPlugin: true,
|
|
49
|
+
pluginName,
|
|
50
|
+
run: null,
|
|
51
|
+
}));
|
|
52
|
+
const registered = {
|
|
53
|
+
name: pluginName,
|
|
54
|
+
description: `Plugin: ${pluginName}`,
|
|
55
|
+
flags: [],
|
|
56
|
+
pluginFlags: [],
|
|
57
|
+
isPlugin: true,
|
|
58
|
+
pluginName,
|
|
59
|
+
subcommands,
|
|
60
|
+
run: null,
|
|
61
|
+
};
|
|
62
|
+
commands.push(registered);
|
|
63
|
+
byName.set(pluginName, registered);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
commands,
|
|
68
|
+
globalFlags: input.globalFlags,
|
|
69
|
+
get(name) {
|
|
70
|
+
return byName.get(name);
|
|
71
|
+
},
|
|
72
|
+
resolveFlags(name, subcommand) {
|
|
73
|
+
const cmd = byName.get(name);
|
|
74
|
+
if (!cmd)
|
|
75
|
+
return [...input.globalFlags];
|
|
76
|
+
let commandFlags = cmd.flags;
|
|
77
|
+
if (subcommand && cmd.subcommands) {
|
|
78
|
+
const sub = cmd.subcommands.find((s) => s.name === subcommand);
|
|
79
|
+
if (sub)
|
|
80
|
+
commandFlags = sub.flags;
|
|
81
|
+
}
|
|
82
|
+
const pluginFlagDefs = cmd.pluginFlags.flatMap((pf) => pf.flags);
|
|
83
|
+
return [...input.globalFlags, ...commandFlags, ...pluginFlagDefs];
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/bin/command-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/check.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,kBAAkB,CAAA;AAMrE,eAAO,MAAM,YAAY,EAAE,UAO1B,CAAA"}
|