use std::path::PathBuf;
use clap::Parser;
use khive_runtime::Namespace;
#[derive(Parser, Debug)]
pub struct Args {
#[arg(long, env = "KHIVE_DB")]
pub db: Option<String>,
#[arg(long, env = "KHIVE_ACTOR")]
pub actor: Option<String>,
#[arg(long, env = "KHIVE_NAMESPACE")]
pub namespace: Option<String>,
#[arg(long, env = "KHIVE_NO_EMBED")]
pub no_embed: bool,
#[arg(long = "pack")]
pub pack: Vec<String>,
#[arg(long = "config", env = "KHIVE_CONFIG")]
pub config: Option<PathBuf>,
#[arg(long)]
pub daemon: bool,
#[arg(long)]
pub transport: Option<String>,
#[arg(long)]
pub bind: Option<String>,
#[arg(long)]
pub brain_profile: Option<String>,
}
pub fn resolve_cli_namespace(args: &Args) -> Result<(bool, Namespace), String> {
let explicit = args.actor.is_some() || args.namespace.is_some();
let raw = args
.actor
.as_deref()
.or(args.namespace.as_deref())
.unwrap_or("local");
let ns = Namespace::parse(raw).map_err(|e| format!("invalid namespace {raw:?}: {e}"))?;
Ok((explicit, ns))
}