Skip to main content

harn_cli/commands/
persona_dispatch.rs

1use crate::cli::{PersonaArgs, PersonaCommand, PersonaSupervisionCommand};
2
3pub(crate) async fn run(args: PersonaArgs) -> Result<(), String> {
4    let PersonaArgs {
5        command,
6        manifest,
7        state_dir,
8    } = args;
9    let manifest = manifest.as_deref();
10    match command {
11        PersonaCommand::New(args) => super::persona_scaffold::run_new(&args).await,
12        PersonaCommand::CompilePrompt(args) => {
13            super::persona_prompt::run_compile_prompt(&args).await
14        }
15        PersonaCommand::Materialize(args) if args.activate => {
16            super::persona_apply::run(manifest, &args).await
17        }
18        PersonaCommand::Materialize(args) => super::persona_scaffold::run_materialize(&args).await,
19        PersonaCommand::Doctor(args) => super::persona_doctor::run_doctor(manifest, &args).await,
20        PersonaCommand::Check(args) => {
21            super::persona::run_check(manifest, &args);
22            Ok(())
23        }
24        PersonaCommand::List(args) => {
25            super::persona::run_list(manifest, &args);
26            Ok(())
27        }
28        PersonaCommand::Inspect(args) => {
29            super::persona::run_inspect(manifest, &args);
30            Ok(())
31        }
32        PersonaCommand::Activate(args) => super::persona_activation::run_activate(manifest, &args),
33        PersonaCommand::Deactivate(args) => {
34            super::persona_activation::run_deactivate(manifest, &args)
35        }
36        PersonaCommand::Activations(args) => {
37            super::persona_activation::run_activations(manifest, &args)
38        }
39        PersonaCommand::Status(args) => {
40            super::persona::run_status(manifest, &state_dir, &args).await
41        }
42        PersonaCommand::Pause(args) => super::persona::run_pause(manifest, &state_dir, &args).await,
43        PersonaCommand::Resume(args) => {
44            super::persona::run_resume(manifest, &state_dir, &args).await
45        }
46        PersonaCommand::Disable(args) => {
47            super::persona::run_disable(manifest, &state_dir, &args).await
48        }
49        PersonaCommand::Tick(args) => super::persona::run_tick(manifest, &state_dir, &args).await,
50        PersonaCommand::Trigger(args) => {
51            super::persona::run_trigger(manifest, &state_dir, &args).await
52        }
53        PersonaCommand::Spend(args) => super::persona::run_spend(manifest, &state_dir, &args).await,
54        PersonaCommand::Supervision(args) => match args.command {
55            PersonaSupervisionCommand::Tail(args) => {
56                super::persona_supervision::run_tail(manifest, &state_dir, &args).await
57            }
58        },
59    }
60}