pub(crate) mod accept;
pub(crate) mod catalogue;
pub(crate) mod list;
pub(crate) mod migrate;
pub(crate) mod probe;
pub(crate) mod refresh;
pub(crate) mod reject;
pub(crate) mod request_verify;
pub(crate) mod runner;
pub(crate) mod session_kind;
pub(crate) mod show;
pub(crate) mod suggestions;
pub(crate) mod unbind;
use aristo_core::canon::{CanonClient, HttpCanonClient, MockCanonClient};
use crate::{CliError, CliResult};
pub(crate) fn required_client(what: &str) -> CliResult<Box<dyn CanonClient>> {
if let Some(mock) = MockCanonClient::from_env() {
return Ok(Box::new(mock));
}
match aristo_core::auth::resolve_full() {
Ok(creds) => {
let base_url = crate::data_plane::resolve_base(&creds.server);
Ok(Box::new(HttpCanonClient::new(base_url, &creds.token)))
}
Err(e) => Err(CliError::Other {
message: format!("{what} requires authentication: {e}"),
exit_code: 1,
}),
}
}