Skip to main content

evorule_cli/
cli.rs

1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Copyright (C) 2026 EvoRule Project
3// This file is part of EvoRule, licensed under GNU Affero General Public License v3 or later.
4//! CLI 参数定义(clap derive)
5//!
6//! 子命令:
7//! - `run`:加载并执行 JSON 规则,输出 fact log
8//! - `replay`:重放 fact log(pretty-print)
9//! - `diff`:对比两个 fact log(按 FactId 对齐)
10//! - `validate`:校验 JSON 规则文件(用 tier1 RuleValidator)
11//! - `verify-chain`:验证 fact log 哈希链完整性
12
13use std::path::PathBuf;
14
15use clap::{Parser, Subcommand};
16
17/// evorule: 没有智能,只有执行的最佳实践
18#[derive(Parser, Debug)]
19#[command(
20    name = "evorule",
21    version,
22    about = "evorule: no intelligence, only best practices of execution",
23    long_about = "evorule CLI - 加载并执行用户编写的 JSON 规则。\n\
24                  零网络、零遥测、零系统依赖,适合合规敏感用户本地使用。\n\
25                  fact log 采用 evorule-reactor WAL 格式,与 evorule-governance 审计链互通。"
26)]
27pub struct Cli {
28    #[command(subcommand)]
29    pub command: Command,
30}
31
32#[derive(Subcommand, Debug)]
33pub enum Command {
34    /// 加载并执行 JSON 规则(输出 fact log)
35    Run {
36        /// 规则目录(包含 *.json 文件)
37        rules_dir: PathBuf,
38
39        /// 初始 payload(JSON 字符串,可选,默认 {})
40        #[arg(long, conflicts_with = "payload_file")]
41        payload: Option<String>,
42
43        /// 从文件读取初始 payload(JSON 格式)
44        #[arg(long)]
45        payload_file: Option<PathBuf>,
46
47        /// 输出文件(默认 stdout)
48        #[arg(long, short = 'o')]
49        output: Option<PathBuf>,
50
51        /// 最大执行步数上界(默认 10000,超限发 Fact::Error 退出)
52        #[arg(long, default_value_t = crate::executor::DEFAULT_MAX_STEPS)]
53        max_steps: usize,
54    },
55
56    /// 重放 fact log(pretty-print 每个 Fact)
57    Replay {
58        /// fact log 文件(JSON Lines 格式,与 tier1 reactor WAL 互通)
59        fact_log: PathBuf,
60    },
61
62    /// 对比两个 fact log(按 FactId 对齐,非 HashSet)
63    Diff {
64        /// 第一个 fact log
65        a: PathBuf,
66        /// 第二个 fact log
67        b: PathBuf,
68    },
69
70    /// 校验 JSON 规则文件(用 tier1 RuleValidator,语法+语义验证)
71    Validate {
72        /// 规则目录
73        rules_dir: PathBuf,
74    },
75
76    /// 验证 fact log 哈希链完整性(blake3,与 evorule-governance 互通)
77    VerifyChain {
78        /// fact log 文件
79        fact_log: PathBuf,
80    },
81}