Skip to main content

helm_schema_cli/cli/
mod.rs

1mod chart_args;
2mod crd_args;
3mod diag_args;
4mod inference_args;
5mod k8s_args;
6mod output_args;
7mod perf_args;
8
9use std::path::PathBuf;
10
11use clap::Parser;
12
13pub use chart_args::ChartArgs;
14pub use crd_args::{CrdArgs, CrdVersionLookup};
15pub use diag_args::{DiagArgs, DiagFormat};
16pub use inference_args::InferenceArgs;
17pub use k8s_args::{DEFAULT_AUTO_WINDOW, K8sArgs, K8sVersionFallback};
18pub use output_args::OutputArgs;
19pub use perf_args::PerfArgs;
20
21/// Complete command-line interface for one schema-generation invocation.
22#[derive(Parser, Debug, Clone)]
23#[command(
24    name = "helm-schema",
25    about = "Generate JSON schema for Helm values.yaml"
26)]
27pub struct Cli {
28    /// Chart directory or packaged chart archive to analyze.
29    #[arg(value_name = "CHART_DIR")]
30    pub chart_dir: PathBuf,
31
32    /// Final output and reference-processing options.
33    #[command(flatten)]
34    pub output: OutputArgs,
35
36    /// Kubernetes schema source and version options.
37    #[command(flatten)]
38    pub k8s: K8sArgs,
39
40    /// CRD schema source and lookup options.
41    #[command(flatten)]
42    pub crd: CrdArgs,
43
44    /// API-version inference options.
45    #[command(flatten)]
46    pub inference: InferenceArgs,
47
48    /// Runtime diagnostic formatting options.
49    #[command(flatten)]
50    pub diag: DiagArgs,
51
52    /// Chart discovery and values-composition options.
53    #[command(flatten)]
54    pub chart: ChartArgs,
55
56    /// Performance tracing options.
57    #[command(flatten)]
58    pub perf: PerfArgs,
59
60    /// Schema files to merge on top of the inferred output, applied in
61    /// the order given. Repeatable: pass multiple `--override-schema`
62    /// flags to layer (e.g. a shared cross-chart top-level schema
63    /// followed by a chart-specific override).
64    #[arg(long)]
65    pub override_schema: Vec<PathBuf>,
66}