quartz_cli/action/
snippet.rs

1use crate::{cli::SnippetCmd as Cmd, endpoint::EndpointPatch, snippet, Ctx, PairMap, QuartzResult};
2
3#[derive(clap::Args, Debug)]
4pub struct Args {
5    /// Use a new or overwritten variable
6    #[arg(long = "var", short = 'v', value_name = "KEY=VALUE")]
7    variables: Vec<String>,
8
9    #[command(flatten)]
10    patch: EndpointPatch,
11
12    #[command(subcommand)]
13    command: crate::cli::SnippetCmd,
14}
15
16pub fn cmd(ctx: &Ctx, mut args: Args) -> QuartzResult {
17    let (_, mut endpoint) = ctx.require_endpoint();
18    let mut env = ctx.require_env();
19
20    for var in args.variables {
21        env.variables.set(&var);
22    }
23
24    endpoint.update(&mut args.patch);
25    endpoint.apply_env(&env);
26
27    match args.command {
28        Cmd::Curl(curl) => curl.print(&mut endpoint)?,
29        Cmd::Http => snippet::Http::print(&mut endpoint)?,
30    };
31
32    Ok(())
33}