burn_central_runtime/
cli.rs

1use 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}