use std::path::PathBuf;
use clap::{Parser, Subcommand};
#[derive(Parser, Debug)]
#[command(
name = "evorule",
version,
about = "evorule: no intelligence, only best practices of execution",
long_about = "evorule CLI - 加载并执行用户编写的 JSON 规则。\n\
零网络、零遥测、零系统依赖,适合合规敏感用户本地使用。\n\
fact log 采用 evorule-reactor WAL 格式,与 evorule-governance 审计链互通。"
)]
pub struct Cli {
#[command(subcommand)]
pub command: Command,
}
#[derive(Subcommand, Debug)]
pub enum Command {
Run {
rules_dir: PathBuf,
#[arg(long, conflicts_with = "payload_file")]
payload: Option<String>,
#[arg(long)]
payload_file: Option<PathBuf>,
#[arg(long, short = 'o')]
output: Option<PathBuf>,
#[arg(long, default_value_t = crate::executor::DEFAULT_MAX_STEPS)]
max_steps: usize,
},
Replay {
fact_log: PathBuf,
},
Diff {
a: PathBuf,
b: PathBuf,
},
Validate {
rules_dir: PathBuf,
},
VerifyChain {
fact_log: PathBuf,
},
}