burn_central_runtime/
cli.rs1use clap::{Args, Parser};
2
3#[derive(Args, Debug)]
4pub struct BurnCentralArgs {
5 #[arg(long, default_value = "default")]
6 pub namespace: String,
7 #[arg(long, default_value = "default")]
8 pub project: String,
9 #[arg(long)]
10 pub api_key: String,
11 #[arg(long, default_value = "http://localhost:9001")]
12 pub endpoint: String,
13}
14
15#[derive(Parser, Debug)]
16#[command(
17 name = "burn-central-runtime",
18 version,
19 about = "Burn Central Runtime CLI"
20)]
21pub struct RuntimeArgs {
22 pub kind: String,
23 pub routine: String,
24 #[arg(long, default_value = "{}")]
25 pub args: String,
26 #[command(flatten)]
27 pub burn_central: BurnCentralArgs,
28}
29
30pub fn parse_runtime_args() -> RuntimeArgs {
31 RuntimeArgs::parse()
32}
33
34#[cfg(test)]
35mod test {
36 use super::*;
37
38 #[test]
39 fn test_parse_runtime_args() {
40 let args = vec![
41 "burn-central-runtime",
42 "train",
43 "my_routine",
44 "--namespace",
45 "my_namespace",
46 "--project",
47 "my_project",
48 "--api-key",
49 "my_api_key",
50 ];
51 let runtime_args = RuntimeArgs::try_parse_from(args).unwrap();
52 assert_eq!(runtime_args.kind, "train");
53 assert_eq!(runtime_args.routine, "my_routine");
54 assert_eq!(runtime_args.args, "{}");
55 assert_eq!(runtime_args.burn_central.namespace, "my_namespace");
56 assert_eq!(runtime_args.burn_central.project, "my_project");
57 assert_eq!(runtime_args.burn_central.api_key, "my_api_key");
58 }
59}