pub(crate) mod accept;
pub(crate) mod catalogue;
pub(crate) mod list;
pub(crate) mod migrate;
pub(crate) mod probe;
pub(crate) mod reject;
pub(crate) mod runner;
pub(crate) mod session_kind;
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,
start: &std::path::Path,
) -> CliResult<Box<dyn CanonClient>> {
if let Some(mock) = MockCanonClient::from_env() {
return Ok(Box::new(mock));
}
let fail = |e: aristo_core::auth::AuthError| CliError::Other {
message: format!("{what} requires authentication: {e}"),
exit_code: 1,
};
let creds = aristo_core::auth::resolve_full().map_err(fail)?;
let t = crate::data_plane::resolve_target(&creds, start).map_err(fail)?;
Ok(Box::new(HttpCanonClient::new(
t.base_url,
&creds.token,
t.repo,
)))
}