quartz_cli/action/
header.rs

1use crate::{cli::HeaderCmd as Cmd, Ctx, PairMap, QuartzResult};
2use std::process::ExitCode;
3
4pub fn cmd(ctx: &mut Ctx, command: Cmd) -> QuartzResult {
5    match command {
6        Cmd::Get { key } => get(ctx, key),
7        Cmd::Set { header } => set(ctx, header),
8        Cmd::Rm { key } => rm(ctx, key),
9        Cmd::Ls => ls(ctx),
10    }
11}
12
13pub fn get(ctx: &Ctx, key: String) -> QuartzResult {
14    let (_, endpoint) = ctx.require_endpoint();
15    if let Some(header) = endpoint.headers.get(&key) {
16        println!("{}", header);
17    } else {
18        panic!("no header named {} found", key);
19    }
20
21    Ok(())
22}
23
24pub fn set(ctx: &Ctx, headers: Vec<String>) -> QuartzResult {
25    let (_, mut endpoint) = ctx.require_endpoint();
26
27    for input in headers {
28        endpoint.headers.set(&input);
29    }
30
31    endpoint.write();
32    Ok(())
33}
34
35pub fn rm(ctx: &mut Ctx, keys: Vec<String>) -> QuartzResult {
36    let (_, mut endpoint) = ctx.require_endpoint();
37
38    for k in keys {
39        if endpoint.headers.contains_key(&k) {
40            endpoint.headers.remove(&k);
41            println!("Removed header: {}", k);
42        } else {
43            ctx.code(ExitCode::FAILURE);
44            eprintln!("{}: No such header", k);
45        }
46    }
47
48    endpoint.write();
49    Ok(())
50}
51
52pub fn ls(ctx: &Ctx) -> QuartzResult {
53    let (_, endpoint) = ctx.require_endpoint();
54
55    print!("{}", endpoint.headers);
56    Ok(())
57}