//! Internal subcommands, not for direct use by users.

use atuin_client::settings::Settings;
use atuin_common::logs::LogConfig;
use tracing::instrument;

#[derive(clap::Subcommand, Debug)]
pub enum Cmd {
    PrepareSearchIndex,
}

impl Cmd {
    #[instrument(level = "trace", skip_all, err)]
    pub async fn run(self, settings: &Settings) -> eyre::Result<()> {
        match self {
            Self::PrepareSearchIndex => super::search::prepare_index(settings).await,
        }
    }

    pub fn log_config(&self) -> Option<LogConfig> {
        match self {
            // This command is called from the shell hooks with no stdout/stderr; there's no point
            // in initializing logging.
            Self::PrepareSearchIndex => None,
        }
    }
}
