Skip to main content

greentic_bundle/cli/
build.rs

1use std::path::PathBuf;
2
3use anyhow::Result;
4use clap::Args;
5
6#[derive(Debug, Args)]
7pub struct BuildArgs {
8    #[arg(long, default_value = ".", help = "cli.build.root.option")]
9    pub root: PathBuf,
10
11    #[arg(long, value_name = "FILE", help = "cli.build.output.option")]
12    pub output: Option<PathBuf>,
13
14    #[arg(long, default_value_t = false, help = "cli.option.dry_run")]
15    pub dry_run: bool,
16
17    /// Embed a precompiled component cache (`.cache/v1/...`) into the bundle.
18    /// Requires `greentic-start` on PATH; bigger artifact, faster cold start.
19    #[arg(long, default_value_t = false)]
20    pub warmup: bool,
21}
22
23impl Default for BuildArgs {
24    fn default() -> Self {
25        Self {
26            root: PathBuf::from("."),
27            output: None,
28            dry_run: false,
29            warmup: false,
30        }
31    }
32}
33
34pub fn run(args: BuildArgs) -> Result<()> {
35    let result = crate::build::build_workspace(
36        &args.root,
37        args.output.as_deref(),
38        args.dry_run,
39        args.warmup,
40    )?;
41    println!("{}", serde_json::to_string_pretty(&result)?);
42    Ok(())
43}