kustodian 1.0.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/LICENSE +21 -0
- package/README.md +346 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +67 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/command.d.ts +57 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +26 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/apply.d.ts +8 -0
- package/dist/cli/commands/apply.d.ts.map +1 -0
- package/dist/cli/commands/apply.js +802 -0
- package/dist/cli/commands/apply.js.map +1 -0
- package/dist/cli/commands/init.d.ts +5 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +403 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/sources.d.ts +5 -0
- package/dist/cli/commands/sources.d.ts.map +1 -0
- package/dist/cli/commands/sources.js +377 -0
- package/dist/cli/commands/sources.js.map +1 -0
- package/dist/cli/commands/update.d.ts +5 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +314 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +5 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +126 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/container.d.ts +48 -0
- package/dist/cli/container.d.ts.map +1 -0
- package/dist/cli/container.js +49 -0
- package/dist/cli/container.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/middleware.d.ts +118 -0
- package/dist/cli/middleware.d.ts.map +1 -0
- package/dist/cli/middleware.js +280 -0
- package/dist/cli/middleware.js.map +1 -0
- package/dist/cli/runner.d.ts +34 -0
- package/dist/cli/runner.d.ts.map +1 -0
- package/dist/cli/runner.js +156 -0
- package/dist/cli/runner.js.map +1 -0
- package/dist/cli/utils/defaults.d.ts +23 -0
- package/dist/cli/utils/defaults.d.ts.map +1 -0
- package/dist/cli/utils/defaults.js +43 -0
- package/dist/cli/utils/defaults.js.map +1 -0
- package/dist/core/error.d.ts +117 -0
- package/dist/core/error.d.ts.map +1 -0
- package/dist/core/error.js +210 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +31 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +78 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/path.d.ts +57 -0
- package/dist/core/path.d.ts.map +1 -0
- package/dist/core/path.js +154 -0
- package/dist/core/path.js.map +1 -0
- package/dist/core/result.d.ts +80 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +150 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/types.d.ts +80 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/generator/external-substitutions.d.ts +21 -0
- package/dist/generator/external-substitutions.d.ts.map +1 -0
- package/dist/generator/external-substitutions.js +49 -0
- package/dist/generator/external-substitutions.js.map +1 -0
- package/dist/generator/flux.d.ts +61 -0
- package/dist/generator/flux.d.ts.map +1 -0
- package/dist/generator/flux.js +294 -0
- package/dist/generator/flux.js.map +1 -0
- package/dist/generator/generator.d.ts +77 -0
- package/dist/generator/generator.d.ts.map +1 -0
- package/dist/generator/generator.js +183 -0
- package/dist/generator/generator.js.map +1 -0
- package/dist/generator/index.d.ts +9 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +9 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/kustomization-resolution.d.ts +40 -0
- package/dist/generator/kustomization-resolution.d.ts.map +1 -0
- package/dist/generator/kustomization-resolution.js +59 -0
- package/dist/generator/kustomization-resolution.js.map +1 -0
- package/dist/generator/namespace.d.ts +74 -0
- package/dist/generator/namespace.d.ts.map +1 -0
- package/dist/generator/namespace.js +109 -0
- package/dist/generator/namespace.js.map +1 -0
- package/dist/generator/output.d.ts +56 -0
- package/dist/generator/output.d.ts.map +1 -0
- package/dist/generator/output.js +171 -0
- package/dist/generator/output.js.map +1 -0
- package/dist/generator/preservation.d.ts +45 -0
- package/dist/generator/preservation.d.ts.map +1 -0
- package/dist/generator/preservation.js +71 -0
- package/dist/generator/preservation.js.map +1 -0
- package/dist/generator/substitution.d.ts +79 -0
- package/dist/generator/substitution.d.ts.map +1 -0
- package/dist/generator/substitution.js +210 -0
- package/dist/generator/substitution.js.map +1 -0
- package/dist/generator/types.d.ts +162 -0
- package/dist/generator/types.d.ts.map +1 -0
- package/dist/generator/types.js +2 -0
- package/dist/generator/types.js.map +1 -0
- package/dist/generator/validation/cycle-detection.d.ts +25 -0
- package/dist/generator/validation/cycle-detection.d.ts.map +1 -0
- package/dist/generator/validation/cycle-detection.js +101 -0
- package/dist/generator/validation/cycle-detection.js.map +1 -0
- package/dist/generator/validation/enablement.d.ts +24 -0
- package/dist/generator/validation/enablement.d.ts.map +1 -0
- package/dist/generator/validation/enablement.js +69 -0
- package/dist/generator/validation/enablement.js.map +1 -0
- package/dist/generator/validation/graph.d.ts +29 -0
- package/dist/generator/validation/graph.d.ts.map +1 -0
- package/dist/generator/validation/graph.js +106 -0
- package/dist/generator/validation/graph.js.map +1 -0
- package/dist/generator/validation/index.d.ts +38 -0
- package/dist/generator/validation/index.d.ts.map +1 -0
- package/dist/generator/validation/index.js +64 -0
- package/dist/generator/validation/index.js.map +1 -0
- package/dist/generator/validation/reference.d.ts +45 -0
- package/dist/generator/validation/reference.d.ts.map +1 -0
- package/dist/generator/validation/reference.js +143 -0
- package/dist/generator/validation/reference.js.map +1 -0
- package/dist/generator/validation/requirements.d.ts +25 -0
- package/dist/generator/validation/requirements.d.ts.map +1 -0
- package/dist/generator/validation/requirements.js +64 -0
- package/dist/generator/validation/requirements.js.map +1 -0
- package/dist/generator/validation/types.d.ts +116 -0
- package/dist/generator/validation/types.d.ts.map +1 -0
- package/dist/generator/validation/types.js +13 -0
- package/dist/generator/validation/types.js.map +1 -0
- package/dist/k8s/exec.d.ts +20 -0
- package/dist/k8s/exec.d.ts.map +1 -0
- package/dist/k8s/exec.js +47 -0
- package/dist/k8s/exec.js.map +1 -0
- package/dist/k8s/flux.d.ts +57 -0
- package/dist/k8s/flux.d.ts.map +1 -0
- package/dist/k8s/flux.js +202 -0
- package/dist/k8s/flux.js.map +1 -0
- package/dist/k8s/index.d.ts +6 -0
- package/dist/k8s/index.d.ts.map +1 -0
- package/dist/k8s/index.js +6 -0
- package/dist/k8s/index.js.map +1 -0
- package/dist/k8s/kubeconfig.d.ts +45 -0
- package/dist/k8s/kubeconfig.d.ts.map +1 -0
- package/dist/k8s/kubeconfig.js +152 -0
- package/dist/k8s/kubeconfig.js.map +1 -0
- package/dist/k8s/kubectl.d.ts +68 -0
- package/dist/k8s/kubectl.d.ts.map +1 -0
- package/dist/k8s/kubectl.js +187 -0
- package/dist/k8s/kubectl.js.map +1 -0
- package/dist/k8s/types.d.ts +65 -0
- package/dist/k8s/types.d.ts.map +1 -0
- package/dist/k8s/types.js +2 -0
- package/dist/k8s/types.js.map +1 -0
- package/dist/loader/file.d.ts +39 -0
- package/dist/loader/file.d.ts.map +1 -0
- package/dist/loader/file.js +121 -0
- package/dist/loader/file.js.map +1 -0
- package/dist/loader/index.d.ts +5 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +5 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/profile.d.ts +23 -0
- package/dist/loader/profile.d.ts.map +1 -0
- package/dist/loader/profile.js +84 -0
- package/dist/loader/profile.js.map +1 -0
- package/dist/loader/project.d.ts +76 -0
- package/dist/loader/project.d.ts.map +1 -0
- package/dist/loader/project.js +279 -0
- package/dist/loader/project.js.map +1 -0
- package/dist/loader/yaml.d.ts +15 -0
- package/dist/loader/yaml.d.ts.map +1 -0
- package/dist/loader/yaml.js +44 -0
- package/dist/loader/yaml.js.map +1 -0
- package/dist/nodes/index.d.ts +5 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +5 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/kubectl-labeler.d.ts +7 -0
- package/dist/nodes/kubectl-labeler.d.ts.map +1 -0
- package/dist/nodes/kubectl-labeler.js +89 -0
- package/dist/nodes/kubectl-labeler.js.map +1 -0
- package/dist/nodes/labeler.d.ts +74 -0
- package/dist/nodes/labeler.d.ts.map +1 -0
- package/dist/nodes/labeler.js +118 -0
- package/dist/nodes/labeler.js.map +1 -0
- package/dist/nodes/profile.d.ts +58 -0
- package/dist/nodes/profile.d.ts.map +1 -0
- package/dist/nodes/profile.js +128 -0
- package/dist/nodes/profile.js.map +1 -0
- package/dist/nodes/types.d.ts +84 -0
- package/dist/nodes/types.d.ts.map +1 -0
- package/dist/nodes/types.js +77 -0
- package/dist/nodes/types.js.map +1 -0
- package/dist/plugins/generators.d.ts +49 -0
- package/dist/plugins/generators.d.ts.map +1 -0
- package/dist/plugins/generators.js +7 -0
- package/dist/plugins/generators.js.map +1 -0
- package/dist/plugins/hooks.d.ts +120 -0
- package/dist/plugins/hooks.d.ts.map +1 -0
- package/dist/plugins/hooks.js +41 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/index.d.ts +8 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +15 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +40 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +236 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/object-types.d.ts +71 -0
- package/dist/plugins/object-types.d.ts.map +1 -0
- package/dist/plugins/object-types.js +65 -0
- package/dist/plugins/object-types.js.map +1 -0
- package/dist/plugins/registry.d.ts +87 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +158 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/plugins/substitution-providers.d.ts +48 -0
- package/dist/plugins/substitution-providers.d.ts.map +1 -0
- package/dist/plugins/substitution-providers.js +2 -0
- package/dist/plugins/substitution-providers.js.map +1 -0
- package/dist/plugins/types.d.ts +288 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +25 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/registry/auth.d.ts +14 -0
- package/dist/registry/auth.d.ts.map +1 -0
- package/dist/registry/auth.js +40 -0
- package/dist/registry/auth.js.map +1 -0
- package/dist/registry/client.d.ts +24 -0
- package/dist/registry/client.d.ts.map +1 -0
- package/dist/registry/client.js +85 -0
- package/dist/registry/client.js.map +1 -0
- package/dist/registry/dockerhub.d.ts +6 -0
- package/dist/registry/dockerhub.d.ts.map +1 -0
- package/dist/registry/dockerhub.js +91 -0
- package/dist/registry/dockerhub.js.map +1 -0
- package/dist/registry/ghcr.d.ts +6 -0
- package/dist/registry/ghcr.d.ts.map +1 -0
- package/dist/registry/ghcr.js +95 -0
- package/dist/registry/ghcr.js.map +1 -0
- package/dist/registry/helm.d.ts +11 -0
- package/dist/registry/helm.d.ts.map +1 -0
- package/dist/registry/helm.js +124 -0
- package/dist/registry/helm.js.map +1 -0
- package/dist/registry/index.d.ts +8 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +12 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/types.d.ts +55 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +2 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/registry/version.d.ts +22 -0
- package/dist/registry/version.d.ts.map +1 -0
- package/dist/registry/version.js +62 -0
- package/dist/registry/version.js.map +1 -0
- package/dist/schema/cluster.d.ts +2890 -0
- package/dist/schema/cluster.d.ts.map +1 -0
- package/dist/schema/cluster.js +231 -0
- package/dist/schema/cluster.js.map +1 -0
- package/dist/schema/common.d.ts +1059 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/common.js +340 -0
- package/dist/schema/common.js.map +1 -0
- package/dist/schema/index.d.ts +8 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +8 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/node-list.d.ts +361 -0
- package/dist/schema/node-list.d.ts.map +1 -0
- package/dist/schema/node-list.js +104 -0
- package/dist/schema/node-list.js.map +1 -0
- package/dist/schema/profile.d.ts +166 -0
- package/dist/schema/profile.d.ts.map +1 -0
- package/dist/schema/profile.js +61 -0
- package/dist/schema/profile.js.map +1 -0
- package/dist/schema/project.d.ts +168 -0
- package/dist/schema/project.d.ts.map +1 -0
- package/dist/schema/project.js +40 -0
- package/dist/schema/project.js.map +1 -0
- package/dist/schema/sources.d.ts +338 -0
- package/dist/schema/sources.d.ts.map +1 -0
- package/dist/schema/sources.js +111 -0
- package/dist/schema/sources.js.map +1 -0
- package/dist/schema/template.d.ts +2711 -0
- package/dist/schema/template.d.ts.map +1 -0
- package/dist/schema/template.js +97 -0
- package/dist/schema/template.js.map +1 -0
- package/dist/sources/cache/index.d.ts +9 -0
- package/dist/sources/cache/index.d.ts.map +1 -0
- package/dist/sources/cache/index.js +278 -0
- package/dist/sources/cache/index.js.map +1 -0
- package/dist/sources/cache/metadata.d.ts +36 -0
- package/dist/sources/cache/metadata.d.ts.map +1 -0
- package/dist/sources/cache/metadata.js +21 -0
- package/dist/sources/cache/metadata.js.map +1 -0
- package/dist/sources/cache/ttl.d.ts +20 -0
- package/dist/sources/cache/ttl.d.ts.map +1 -0
- package/dist/sources/cache/ttl.js +53 -0
- package/dist/sources/cache/ttl.js.map +1 -0
- package/dist/sources/fetchers/git.d.ts +6 -0
- package/dist/sources/fetchers/git.d.ts.map +1 -0
- package/dist/sources/fetchers/git.js +165 -0
- package/dist/sources/fetchers/git.js.map +1 -0
- package/dist/sources/fetchers/http.d.ts +6 -0
- package/dist/sources/fetchers/http.d.ts.map +1 -0
- package/dist/sources/fetchers/http.js +159 -0
- package/dist/sources/fetchers/http.js.map +1 -0
- package/dist/sources/fetchers/index.d.ts +11 -0
- package/dist/sources/fetchers/index.d.ts.map +1 -0
- package/dist/sources/fetchers/index.js +24 -0
- package/dist/sources/fetchers/index.js.map +1 -0
- package/dist/sources/fetchers/oci.d.ts +6 -0
- package/dist/sources/fetchers/oci.d.ts.map +1 -0
- package/dist/sources/fetchers/oci.js +156 -0
- package/dist/sources/fetchers/oci.js.map +1 -0
- package/dist/sources/fetchers/types.d.ts +25 -0
- package/dist/sources/fetchers/types.d.ts.map +1 -0
- package/dist/sources/fetchers/types.js +2 -0
- package/dist/sources/fetchers/types.js.map +1 -0
- package/dist/sources/index.d.ts +6 -0
- package/dist/sources/index.d.ts.map +1 -0
- package/dist/sources/index.js +10 -0
- package/dist/sources/index.js.map +1 -0
- package/dist/sources/loader.d.ts +34 -0
- package/dist/sources/loader.d.ts.map +1 -0
- package/dist/sources/loader.js +89 -0
- package/dist/sources/loader.js.map +1 -0
- package/dist/sources/resolver.d.ts +17 -0
- package/dist/sources/resolver.d.ts.map +1 -0
- package/dist/sources/resolver.js +125 -0
- package/dist/sources/resolver.js.map +1 -0
- package/dist/sources/types.d.ts +151 -0
- package/dist/sources/types.d.ts.map +1 -0
- package/dist/sources/types.js +2 -0
- package/dist/sources/types.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { KustodianErrorType } from '../core/index.js';
|
|
2
|
+
import { type ResultType } from '../core/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Log levels for configurable verbosity.
|
|
5
|
+
*/
|
|
6
|
+
export type LogLevelType = 'silent' | 'normal' | 'verbose' | 'debug';
|
|
7
|
+
/**
|
|
8
|
+
* Logger interface for middleware.
|
|
9
|
+
*/
|
|
10
|
+
export interface LoggerType {
|
|
11
|
+
level: LogLevelType;
|
|
12
|
+
debug(message: string, ...args: unknown[]): void;
|
|
13
|
+
info(message: string, ...args: unknown[]): void;
|
|
14
|
+
warn(message: string, ...args: unknown[]): void;
|
|
15
|
+
error(message: string, ...args: unknown[]): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Progress tracker interface.
|
|
19
|
+
*/
|
|
20
|
+
export interface ProgressType {
|
|
21
|
+
start(text: string): void;
|
|
22
|
+
update(text: string): void;
|
|
23
|
+
succeed(text?: string): void;
|
|
24
|
+
fail(text?: string): void;
|
|
25
|
+
stop(): void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Context passed through the middleware pipeline.
|
|
29
|
+
*/
|
|
30
|
+
export interface ContextType {
|
|
31
|
+
/**
|
|
32
|
+
* Command arguments.
|
|
33
|
+
*/
|
|
34
|
+
args: string[];
|
|
35
|
+
/**
|
|
36
|
+
* Parsed options.
|
|
37
|
+
*/
|
|
38
|
+
options: Record<string, unknown>;
|
|
39
|
+
/**
|
|
40
|
+
* Custom data added by middleware.
|
|
41
|
+
*/
|
|
42
|
+
data: Record<string, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Whether running in dry-run mode.
|
|
45
|
+
*/
|
|
46
|
+
dry_run?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Logger instance (added by logging middleware).
|
|
49
|
+
*/
|
|
50
|
+
logger?: LoggerType;
|
|
51
|
+
/**
|
|
52
|
+
* Progress tracker (added by progress middleware).
|
|
53
|
+
*/
|
|
54
|
+
progress?: ProgressType;
|
|
55
|
+
/**
|
|
56
|
+
* Timing data (added by timing middleware).
|
|
57
|
+
*/
|
|
58
|
+
timing?: {
|
|
59
|
+
start_time: number;
|
|
60
|
+
duration_ms?: number;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Next function in the middleware chain.
|
|
65
|
+
*/
|
|
66
|
+
export type NextType = () => Promise<ResultType<void, KustodianErrorType>>;
|
|
67
|
+
/**
|
|
68
|
+
* Middleware function type.
|
|
69
|
+
*/
|
|
70
|
+
export type MiddlewareType = (ctx: ContextType, next: NextType) => Promise<ResultType<void, KustodianErrorType>>;
|
|
71
|
+
/**
|
|
72
|
+
* Creates a middleware pipeline.
|
|
73
|
+
*/
|
|
74
|
+
export declare function create_pipeline(middleware: MiddlewareType[]): MiddlewareType;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a new empty context.
|
|
77
|
+
*/
|
|
78
|
+
export declare function create_context(args?: string[], options?: Record<string, unknown>): ContextType;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a logger with the specified verbosity level.
|
|
81
|
+
*/
|
|
82
|
+
export declare function create_logger(level?: LogLevelType): LoggerType;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a progress tracker using ora spinner.
|
|
85
|
+
*/
|
|
86
|
+
export declare function create_progress(enabled?: boolean): ProgressType;
|
|
87
|
+
/**
|
|
88
|
+
* Dry-run middleware - sets dry_run flag on context based on --dry-run option.
|
|
89
|
+
*/
|
|
90
|
+
export declare function dry_run_middleware(): MiddlewareType;
|
|
91
|
+
/**
|
|
92
|
+
* Logging middleware - adds logger to context based on verbosity options.
|
|
93
|
+
*/
|
|
94
|
+
export declare function logging_middleware(): MiddlewareType;
|
|
95
|
+
/**
|
|
96
|
+
* Progress middleware - adds progress tracker to context.
|
|
97
|
+
*/
|
|
98
|
+
export declare function progress_middleware(): MiddlewareType;
|
|
99
|
+
/**
|
|
100
|
+
* Timing middleware - measures command execution duration.
|
|
101
|
+
*/
|
|
102
|
+
export declare function timing_middleware(): MiddlewareType;
|
|
103
|
+
/**
|
|
104
|
+
* Error handling middleware - provides consistent error handling and recovery suggestions.
|
|
105
|
+
*/
|
|
106
|
+
export declare function error_handling_middleware(): MiddlewareType;
|
|
107
|
+
/**
|
|
108
|
+
* Creates the default middleware stack for CLI operations.
|
|
109
|
+
*
|
|
110
|
+
* Middleware order (outermost to innermost):
|
|
111
|
+
* 1. timing - measures total execution time
|
|
112
|
+
* 2. logging - configures logger
|
|
113
|
+
* 3. error_handling - catches and formats errors
|
|
114
|
+
* 4. dry_run - sets dry-run mode
|
|
115
|
+
* 5. progress - provides spinner for operations
|
|
116
|
+
*/
|
|
117
|
+
export declare function create_default_middleware(): MiddlewareType[];
|
|
118
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/cli/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import ora, {} from 'ora';
|
|
2
|
+
import { failure } from '../core/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a middleware pipeline.
|
|
5
|
+
*/
|
|
6
|
+
export function create_pipeline(middleware) {
|
|
7
|
+
return async (ctx, next) => {
|
|
8
|
+
let index = -1;
|
|
9
|
+
const dispatch = async (i) => {
|
|
10
|
+
if (i <= index) {
|
|
11
|
+
throw new Error('next() called multiple times');
|
|
12
|
+
}
|
|
13
|
+
index = i;
|
|
14
|
+
const fn = i < middleware.length ? middleware[i] : next;
|
|
15
|
+
if (!fn) {
|
|
16
|
+
return { success: true, value: undefined };
|
|
17
|
+
}
|
|
18
|
+
return fn(ctx, () => dispatch(i + 1));
|
|
19
|
+
};
|
|
20
|
+
return dispatch(0);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new empty context.
|
|
25
|
+
*/
|
|
26
|
+
export function create_context(args = [], options = {}) {
|
|
27
|
+
return {
|
|
28
|
+
args,
|
|
29
|
+
options,
|
|
30
|
+
data: {},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Logger Implementation
|
|
35
|
+
// ============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* Creates a logger with the specified verbosity level.
|
|
38
|
+
*/
|
|
39
|
+
export function create_logger(level = 'normal') {
|
|
40
|
+
const should_log = (target_level) => {
|
|
41
|
+
const levels = ['silent', 'normal', 'verbose', 'debug'];
|
|
42
|
+
return levels.indexOf(level) >= levels.indexOf(target_level);
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
level,
|
|
46
|
+
debug(message, ...args) {
|
|
47
|
+
if (should_log('debug')) {
|
|
48
|
+
console.log(`[DEBUG] ${message}`, ...args);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
info(message, ...args) {
|
|
52
|
+
if (should_log('normal')) {
|
|
53
|
+
console.log(message, ...args);
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
warn(message, ...args) {
|
|
57
|
+
if (should_log('normal')) {
|
|
58
|
+
console.warn(`⚠ ${message}`, ...args);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
error(message, ...args) {
|
|
62
|
+
// Always log errors except in silent mode
|
|
63
|
+
if (level !== 'silent') {
|
|
64
|
+
console.error(`✗ ${message}`, ...args);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// Progress Tracker Implementation
|
|
71
|
+
// ============================================================================
|
|
72
|
+
/**
|
|
73
|
+
* Creates a progress tracker using ora spinner.
|
|
74
|
+
*/
|
|
75
|
+
export function create_progress(enabled = true) {
|
|
76
|
+
let spinner = null;
|
|
77
|
+
if (!enabled) {
|
|
78
|
+
// No-op implementation when progress is disabled
|
|
79
|
+
return {
|
|
80
|
+
start: () => { },
|
|
81
|
+
update: () => { },
|
|
82
|
+
succeed: () => { },
|
|
83
|
+
fail: () => { },
|
|
84
|
+
stop: () => { },
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
start(text) {
|
|
89
|
+
spinner = ora({ text, color: 'cyan' }).start();
|
|
90
|
+
},
|
|
91
|
+
update(text) {
|
|
92
|
+
if (spinner) {
|
|
93
|
+
spinner.text = text;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
spinner = ora({ text, color: 'cyan' }).start();
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
succeed(text) {
|
|
100
|
+
if (spinner) {
|
|
101
|
+
spinner.succeed(text);
|
|
102
|
+
spinner = null;
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
fail(text) {
|
|
106
|
+
if (spinner) {
|
|
107
|
+
spinner.fail(text);
|
|
108
|
+
spinner = null;
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
stop() {
|
|
112
|
+
if (spinner) {
|
|
113
|
+
spinner.stop();
|
|
114
|
+
spinner = null;
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// Built-in Middleware
|
|
121
|
+
// ============================================================================
|
|
122
|
+
/**
|
|
123
|
+
* Dry-run middleware - sets dry_run flag on context based on --dry-run option.
|
|
124
|
+
*/
|
|
125
|
+
export function dry_run_middleware() {
|
|
126
|
+
return async (ctx, next) => {
|
|
127
|
+
ctx.dry_run = ctx.options['dry-run'] === true;
|
|
128
|
+
if (ctx.dry_run && ctx.logger) {
|
|
129
|
+
ctx.logger.info('[DRY RUN] Preview mode - no changes will be made');
|
|
130
|
+
}
|
|
131
|
+
const result = await next();
|
|
132
|
+
if (ctx.dry_run && ctx.logger) {
|
|
133
|
+
ctx.logger.info('[DRY RUN] No changes were made');
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Logging middleware - adds logger to context based on verbosity options.
|
|
140
|
+
*/
|
|
141
|
+
export function logging_middleware() {
|
|
142
|
+
return async (ctx, next) => {
|
|
143
|
+
let level = 'normal';
|
|
144
|
+
if (ctx.options['silent'] === true) {
|
|
145
|
+
level = 'silent';
|
|
146
|
+
}
|
|
147
|
+
else if (ctx.options['debug'] === true) {
|
|
148
|
+
level = 'debug';
|
|
149
|
+
}
|
|
150
|
+
else if (ctx.options['verbose'] === true) {
|
|
151
|
+
level = 'verbose';
|
|
152
|
+
}
|
|
153
|
+
ctx.logger = create_logger(level);
|
|
154
|
+
ctx.logger.debug('Starting command execution');
|
|
155
|
+
ctx.logger.debug('Options:', ctx.options);
|
|
156
|
+
const result = await next();
|
|
157
|
+
ctx.logger.debug('Command execution completed');
|
|
158
|
+
return result;
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Progress middleware - adds progress tracker to context.
|
|
163
|
+
*/
|
|
164
|
+
export function progress_middleware() {
|
|
165
|
+
return async (ctx, next) => {
|
|
166
|
+
const enabled = ctx.options['no-progress'] !== true;
|
|
167
|
+
ctx.progress = create_progress(enabled);
|
|
168
|
+
try {
|
|
169
|
+
return await next();
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
// Ensure spinner is stopped even if there's an error
|
|
173
|
+
ctx.progress.stop();
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Timing middleware - measures command execution duration.
|
|
179
|
+
*/
|
|
180
|
+
export function timing_middleware() {
|
|
181
|
+
return async (ctx, next) => {
|
|
182
|
+
const start_time = Date.now();
|
|
183
|
+
ctx.timing = { start_time };
|
|
184
|
+
const result = await next();
|
|
185
|
+
const duration_ms = Date.now() - start_time;
|
|
186
|
+
ctx.timing.duration_ms = duration_ms;
|
|
187
|
+
if (ctx.logger && ctx.logger.level !== 'silent') {
|
|
188
|
+
const seconds = (duration_ms / 1000).toFixed(1);
|
|
189
|
+
ctx.logger.info(`Completed in ${seconds}s`);
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Error handling middleware - provides consistent error handling and recovery suggestions.
|
|
196
|
+
*/
|
|
197
|
+
export function error_handling_middleware() {
|
|
198
|
+
return async (ctx, next) => {
|
|
199
|
+
try {
|
|
200
|
+
const result = await next();
|
|
201
|
+
if (!result.success) {
|
|
202
|
+
const error = result.error;
|
|
203
|
+
if (ctx.logger) {
|
|
204
|
+
ctx.logger.error(`Error: ${error.message}`);
|
|
205
|
+
if (ctx.logger.level === 'debug' || ctx.logger.level === 'verbose') {
|
|
206
|
+
ctx.logger.debug(`Error code: ${error.code}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
console.error(`Error: ${error.message}`);
|
|
211
|
+
}
|
|
212
|
+
// Provide recovery suggestions based on error code
|
|
213
|
+
const suggestions = get_error_suggestions(error.code);
|
|
214
|
+
if (suggestions.length > 0 && ctx.logger) {
|
|
215
|
+
ctx.logger.info('Suggestions:');
|
|
216
|
+
for (const suggestion of suggestions) {
|
|
217
|
+
ctx.logger.info(` - ${suggestion}`);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
const err = error;
|
|
225
|
+
if (ctx.logger) {
|
|
226
|
+
ctx.logger.error(`Unexpected error: ${err.message}`);
|
|
227
|
+
if (ctx.logger.level === 'debug') {
|
|
228
|
+
ctx.logger.debug('Stack trace:', err.stack);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.error(`Unexpected error: ${err.message}`);
|
|
233
|
+
}
|
|
234
|
+
return failure({
|
|
235
|
+
code: 'UNEXPECTED_ERROR',
|
|
236
|
+
message: err.message,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Returns recovery suggestions for known error codes.
|
|
243
|
+
*/
|
|
244
|
+
function get_error_suggestions(code) {
|
|
245
|
+
const suggestions = {
|
|
246
|
+
COMMAND_NOT_FOUND: ['Run "kustodian --help" to see available commands'],
|
|
247
|
+
NOT_FOUND: ['Check that the resource exists', 'Verify the name is spelled correctly'],
|
|
248
|
+
MISSING_DEPENDENCY: [
|
|
249
|
+
'Install required dependencies',
|
|
250
|
+
'Check that kubectl and flux CLIs are installed',
|
|
251
|
+
],
|
|
252
|
+
DEPENDENCY_VALIDATION_ERROR: [
|
|
253
|
+
'Check for circular dependencies between templates',
|
|
254
|
+
'Verify all depends_on references are valid',
|
|
255
|
+
],
|
|
256
|
+
FILE_NOT_FOUND: ['Verify the file path is correct', 'Check file permissions'],
|
|
257
|
+
FILE_WRITE_ERROR: ['Check directory permissions', 'Ensure disk has available space'],
|
|
258
|
+
};
|
|
259
|
+
return suggestions[code] ?? [];
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Creates the default middleware stack for CLI operations.
|
|
263
|
+
*
|
|
264
|
+
* Middleware order (outermost to innermost):
|
|
265
|
+
* 1. timing - measures total execution time
|
|
266
|
+
* 2. logging - configures logger
|
|
267
|
+
* 3. error_handling - catches and formats errors
|
|
268
|
+
* 4. dry_run - sets dry-run mode
|
|
269
|
+
* 5. progress - provides spinner for operations
|
|
270
|
+
*/
|
|
271
|
+
export function create_default_middleware() {
|
|
272
|
+
return [
|
|
273
|
+
timing_middleware(),
|
|
274
|
+
logging_middleware(),
|
|
275
|
+
error_handling_middleware(),
|
|
276
|
+
dry_run_middleware(),
|
|
277
|
+
progress_middleware(),
|
|
278
|
+
];
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/cli/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { KustodianErrorType } from '../core/index.js';
|
|
2
|
+
import { type ResultType } from '../core/index.js';
|
|
3
|
+
import type { CommandType } from './command.js';
|
|
4
|
+
import type { ContainerType } from './container.js';
|
|
5
|
+
import { type MiddlewareType } from './middleware.js';
|
|
6
|
+
/**
|
|
7
|
+
* CLI configuration.
|
|
8
|
+
*/
|
|
9
|
+
export interface CLIConfigType {
|
|
10
|
+
name: string;
|
|
11
|
+
version: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* CLI builder interface.
|
|
16
|
+
*/
|
|
17
|
+
export interface CLIType {
|
|
18
|
+
command(cmd: CommandType): CLIType;
|
|
19
|
+
use(middleware: MiddlewareType): CLIType;
|
|
20
|
+
run(args: string[], container: ContainerType): Promise<ResultType<void, KustodianErrorType>>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new CLI instance.
|
|
24
|
+
*/
|
|
25
|
+
export declare function create_cli(_config: CLIConfigType): CLIType;
|
|
26
|
+
/**
|
|
27
|
+
* Gets CLI version info string.
|
|
28
|
+
*/
|
|
29
|
+
export declare function format_version(config: CLIConfigType): string;
|
|
30
|
+
/**
|
|
31
|
+
* Gets CLI help text.
|
|
32
|
+
*/
|
|
33
|
+
export declare function format_help(config: CLIConfigType, commands: CommandType[]): string;
|
|
34
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC;IACnC,GAAG,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC;IACzC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAC9F;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAwD1D;AA6FD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAoBlF"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { failure, success } from '../core/index.js';
|
|
2
|
+
import { create_context, create_pipeline, } from './middleware.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a new CLI instance.
|
|
5
|
+
*/
|
|
6
|
+
export function create_cli(_config) {
|
|
7
|
+
const commands = [];
|
|
8
|
+
const global_middleware = [];
|
|
9
|
+
const cli = {
|
|
10
|
+
command(cmd) {
|
|
11
|
+
commands.push(cmd);
|
|
12
|
+
return cli;
|
|
13
|
+
},
|
|
14
|
+
use(middleware) {
|
|
15
|
+
global_middleware.push(middleware);
|
|
16
|
+
return cli;
|
|
17
|
+
},
|
|
18
|
+
async run(args, container) {
|
|
19
|
+
// Parse command from args
|
|
20
|
+
const [command_name, ...rest_args] = args;
|
|
21
|
+
if (!command_name) {
|
|
22
|
+
// Show help if no command specified
|
|
23
|
+
return success(undefined);
|
|
24
|
+
}
|
|
25
|
+
const command = commands.find((c) => c.name === command_name);
|
|
26
|
+
if (!command) {
|
|
27
|
+
return failure({
|
|
28
|
+
code: 'COMMAND_NOT_FOUND',
|
|
29
|
+
message: `Unknown command: ${command_name}`,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
// Parse options and arguments
|
|
33
|
+
const { options, positional_args } = parse_args(rest_args, command);
|
|
34
|
+
// Create context
|
|
35
|
+
const ctx = create_context(positional_args, options);
|
|
36
|
+
// Combine middleware
|
|
37
|
+
const command_middleware = command.middleware ?? [];
|
|
38
|
+
const all_middleware = [...global_middleware, ...command_middleware];
|
|
39
|
+
// Create handler middleware
|
|
40
|
+
const handler_middleware = create_handler_middleware(command.handler, container);
|
|
41
|
+
// Execute pipeline
|
|
42
|
+
const pipeline = create_pipeline([...all_middleware, handler_middleware]);
|
|
43
|
+
return pipeline(ctx, async () => success(undefined));
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
return cli;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parses command line arguments.
|
|
50
|
+
*/
|
|
51
|
+
function parse_args(args, command) {
|
|
52
|
+
const options = {};
|
|
53
|
+
const positional_args = [];
|
|
54
|
+
// Set default values
|
|
55
|
+
for (const opt of command.options ?? []) {
|
|
56
|
+
if (opt.default_value !== undefined) {
|
|
57
|
+
options[opt.name] = opt.default_value;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
let i = 0;
|
|
61
|
+
while (i < args.length) {
|
|
62
|
+
const arg = args[i];
|
|
63
|
+
if (!arg) {
|
|
64
|
+
i++;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (arg.startsWith('--')) {
|
|
68
|
+
const [key, value] = arg.slice(2).split('=');
|
|
69
|
+
if (!key) {
|
|
70
|
+
i++;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const opt = command.options?.find((o) => o.name === key);
|
|
74
|
+
if (opt) {
|
|
75
|
+
if (opt.type === 'boolean') {
|
|
76
|
+
options[key] = value !== 'false';
|
|
77
|
+
}
|
|
78
|
+
else if (value !== undefined) {
|
|
79
|
+
options[key] = opt.type === 'number' ? Number(value) : value;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const next_arg = args[i + 1];
|
|
83
|
+
const next_value = next_arg;
|
|
84
|
+
if (next_value && !next_value.startsWith('-')) {
|
|
85
|
+
options[key] = opt.type === 'number' ? Number(next_value) : next_value;
|
|
86
|
+
i++;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
options[key] = true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (arg.startsWith('-') && arg.length === 2) {
|
|
95
|
+
const short = arg.slice(1);
|
|
96
|
+
const opt = command.options?.find((o) => o.short === short);
|
|
97
|
+
if (opt) {
|
|
98
|
+
const next_arg = args[i + 1];
|
|
99
|
+
const next_value = next_arg;
|
|
100
|
+
if (opt.type === 'boolean') {
|
|
101
|
+
options[opt.name] = true;
|
|
102
|
+
}
|
|
103
|
+
else if (next_value && !next_value.startsWith('-')) {
|
|
104
|
+
options[opt.name] = opt.type === 'number' ? Number(next_value) : next_value;
|
|
105
|
+
i++;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
positional_args.push(arg);
|
|
111
|
+
}
|
|
112
|
+
i++;
|
|
113
|
+
}
|
|
114
|
+
return { options, positional_args };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Creates a middleware that executes the command handler.
|
|
118
|
+
*/
|
|
119
|
+
function create_handler_middleware(handler, container) {
|
|
120
|
+
return async (ctx, next) => {
|
|
121
|
+
if (handler) {
|
|
122
|
+
const result = await handler(ctx, container);
|
|
123
|
+
if (!result.success) {
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return next();
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Gets CLI version info string.
|
|
132
|
+
*/
|
|
133
|
+
export function format_version(config) {
|
|
134
|
+
return `${config.name} v${config.version}`;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Gets CLI help text.
|
|
138
|
+
*/
|
|
139
|
+
export function format_help(config, commands) {
|
|
140
|
+
const lines = [];
|
|
141
|
+
lines.push(config.description ?? config.name);
|
|
142
|
+
lines.push('');
|
|
143
|
+
lines.push('Usage:');
|
|
144
|
+
lines.push(` ${config.name} <command> [options]`);
|
|
145
|
+
lines.push('');
|
|
146
|
+
lines.push('Commands:');
|
|
147
|
+
for (const cmd of commands) {
|
|
148
|
+
lines.push(` ${cmd.name.padEnd(20)} ${cmd.description}`);
|
|
149
|
+
}
|
|
150
|
+
lines.push('');
|
|
151
|
+
lines.push('Options:');
|
|
152
|
+
lines.push(' --help, -h Show help');
|
|
153
|
+
lines.push(' --version, -v Show version');
|
|
154
|
+
return lines.join('\n');
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ClusterType, ProjectType as ProjectConfigType } from '../../schema/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolved defaults for a cluster with all values guaranteed to be defined.
|
|
4
|
+
*/
|
|
5
|
+
export interface ResolvedDefaultsType {
|
|
6
|
+
flux_namespace: string;
|
|
7
|
+
oci_repository_name: string;
|
|
8
|
+
oci_registry_secret_name: string;
|
|
9
|
+
flux_reconciliation_interval: string;
|
|
10
|
+
flux_reconciliation_timeout: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolves defaults for a cluster using three-tier cascading:
|
|
14
|
+
* 1. Cluster spec.defaults (highest priority)
|
|
15
|
+
* 2. Project spec.defaults
|
|
16
|
+
* 3. Schema defaults (hardcoded fallbacks)
|
|
17
|
+
*
|
|
18
|
+
* @param cluster - The cluster configuration
|
|
19
|
+
* @param project_config - Optional project configuration from kustodian.yaml
|
|
20
|
+
* @returns Resolved defaults with all values defined
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolve_defaults(cluster: ClusterType, project_config?: ProjectConfigType): ResolvedDefaultsType;
|
|
23
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/cli/utils/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAc3F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EACpB,cAAc,CAAC,EAAE,iBAAiB,GACjC,oBAAoB,CA8BtB"}
|