harn-cli 0.10.23

CLI for the Harn programming language — run, test, REPL, format, and lint
use crate::cli::{PersonaArgs, PersonaCommand, PersonaSupervisionCommand};

pub(crate) async fn run(args: PersonaArgs) -> Result<(), String> {
    let PersonaArgs {
        command,
        manifest,
        state_dir,
    } = args;
    let manifest = manifest.as_deref();
    match command {
        PersonaCommand::New(args) => super::persona_scaffold::run_new(&args).await,
        PersonaCommand::Materialize(args) => super::persona_scaffold::run_materialize(&args).await,
        PersonaCommand::Doctor(args) => super::persona_doctor::run_doctor(manifest, &args).await,
        PersonaCommand::Check(args) => {
            super::persona::run_check(manifest, &args);
            Ok(())
        }
        PersonaCommand::List(args) => {
            super::persona::run_list(manifest, &args);
            Ok(())
        }
        PersonaCommand::Inspect(args) => {
            super::persona::run_inspect(manifest, &args);
            Ok(())
        }
        PersonaCommand::Activate(args) => super::persona_activation::run_activate(manifest, &args),
        PersonaCommand::Deactivate(args) => {
            super::persona_activation::run_deactivate(manifest, &args)
        }
        PersonaCommand::Activations(args) => {
            super::persona_activation::run_activations(manifest, &args)
        }
        PersonaCommand::Status(args) => {
            super::persona::run_status(manifest, &state_dir, &args).await
        }
        PersonaCommand::Pause(args) => super::persona::run_pause(manifest, &state_dir, &args).await,
        PersonaCommand::Resume(args) => {
            super::persona::run_resume(manifest, &state_dir, &args).await
        }
        PersonaCommand::Disable(args) => {
            super::persona::run_disable(manifest, &state_dir, &args).await
        }
        PersonaCommand::Tick(args) => super::persona::run_tick(manifest, &state_dir, &args).await,
        PersonaCommand::Trigger(args) => {
            super::persona::run_trigger(manifest, &state_dir, &args).await
        }
        PersonaCommand::Spend(args) => super::persona::run_spend(manifest, &state_dir, &args).await,
        PersonaCommand::Supervision(args) => match args.command {
            PersonaSupervisionCommand::Tail(args) => {
                super::persona_supervision::run_tail(manifest, &state_dir, &args).await
            }
        },
    }
}