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) => Box::pin(super::persona_scaffold::run_new(&args)).await,
12        PersonaCommand::CompilePrompt(args) => {
13            Box::pin(super::persona_prompt::run_compile_prompt(&args)).await
14        }
15        PersonaCommand::Materialize(args) if args.activate => {
16            Box::pin(super::persona_apply::run(manifest, &args)).await
17        }
18        PersonaCommand::Materialize(args) => {
19            Box::pin(super::persona_scaffold::run_materialize(&args)).await
20        }
21        PersonaCommand::Doctor(args) => {
22            Box::pin(super::persona_doctor::run_doctor(manifest, &args)).await
23        }
24        PersonaCommand::Check(args) => {
25            super::persona::run_check(manifest, &args);
26            Ok(())
27        }
28        PersonaCommand::List(args) => {
29            super::persona::run_list(manifest, &args);
30            Ok(())
31        }
32        PersonaCommand::Inspect(args) => {
33            super::persona::run_inspect(manifest, &args);
34            Ok(())
35        }
36        PersonaCommand::Activate(args) => super::persona_activation::run_activate(manifest, &args),
37        PersonaCommand::Deactivate(args) => {
38            super::persona_activation::run_deactivate(manifest, &args)
39        }
40        PersonaCommand::Activations(args) => {
41            super::persona_activation::run_activations(manifest, &args)
42        }
43        PersonaCommand::Status(args) => {
44            Box::pin(super::persona::run_status(manifest, &state_dir, &args)).await
45        }
46        PersonaCommand::Pause(args) => {
47            Box::pin(super::persona::run_pause(manifest, &state_dir, &args)).await
48        }
49        PersonaCommand::Resume(args) => {
50            Box::pin(super::persona::run_resume(manifest, &state_dir, &args)).await
51        }
52        PersonaCommand::Disable(args) => {
53            Box::pin(super::persona::run_disable(manifest, &state_dir, &args)).await
54        }
55        PersonaCommand::Tick(args) => {
56            Box::pin(super::persona::run_tick(manifest, &state_dir, &args)).await
57        }
58        PersonaCommand::Trigger(args) => {
59            Box::pin(super::persona::run_trigger(manifest, &state_dir, &args)).await
60        }
61        PersonaCommand::Spend(args) => {
62            Box::pin(super::persona::run_spend(manifest, &state_dir, &args)).await
63        }
64        PersonaCommand::Supervision(args) => match args.command {
65            PersonaSupervisionCommand::Tail(args) => {
66                Box::pin(super::persona_supervision::run_tail(
67                    manifest, &state_dir, &args,
68                ))
69                .await
70            }
71        },
72    }
73}