quartz_cli/action/
header.rs1use 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}