refactor: consolidate CLI command definitions to lib.rs
- Move all CLI command enums (ChannelCommands, SkillCommands, CronCommands, IntegrationCommands, MigrateCommands, ServiceCommands) to lib.rs - Add clap derives for use in main.rs CLI parsing - Update all modules to use crate:: prefix instead of super:: for command types - Add mod util; to main.rs for binary compilation - Export Config type from lib.rs for main.rs This refactoring eliminates code duplication between library modules and binary, centralizing all CLI command definitions in one place. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
9aaa5bfef1
commit
085b57aa30
7 changed files with 131 additions and 18 deletions
112
src/lib.rs
112
src/lib.rs
|
|
@ -11,17 +11,129 @@
|
|||
dead_code
|
||||
)]
|
||||
|
||||
use clap::Subcommand;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
pub mod agent;
|
||||
pub mod channels;
|
||||
pub mod config;
|
||||
pub mod cron;
|
||||
pub mod daemon;
|
||||
pub mod doctor;
|
||||
pub mod gateway;
|
||||
pub mod health;
|
||||
pub mod heartbeat;
|
||||
pub mod integrations;
|
||||
pub mod memory;
|
||||
pub mod migration;
|
||||
pub mod observability;
|
||||
pub mod onboard;
|
||||
pub mod providers;
|
||||
pub mod runtime;
|
||||
pub mod security;
|
||||
pub mod service;
|
||||
pub mod skills;
|
||||
pub mod tools;
|
||||
pub mod tunnel;
|
||||
pub mod util;
|
||||
|
||||
pub use config::Config;
|
||||
|
||||
/// Service management subcommands
|
||||
#[derive(Subcommand, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum ServiceCommands {
|
||||
/// Install daemon service unit for auto-start and restart
|
||||
Install,
|
||||
/// Start daemon service
|
||||
Start,
|
||||
/// Stop daemon service
|
||||
Stop,
|
||||
/// Check daemon service status
|
||||
Status,
|
||||
/// Uninstall daemon service unit
|
||||
Uninstall,
|
||||
}
|
||||
|
||||
/// Channel management subcommands
|
||||
#[derive(Subcommand, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum ChannelCommands {
|
||||
/// List all configured channels
|
||||
List,
|
||||
/// Start all configured channels (handled in main.rs for async)
|
||||
Start,
|
||||
/// Run health checks for configured channels (handled in main.rs for async)
|
||||
Doctor,
|
||||
/// Add a new channel configuration
|
||||
Add {
|
||||
/// Channel type (telegram, discord, slack, whatsapp, matrix, imessage, email)
|
||||
channel_type: String,
|
||||
/// Optional configuration as JSON
|
||||
config: String,
|
||||
},
|
||||
/// Remove a channel configuration
|
||||
Remove {
|
||||
/// Channel name to remove
|
||||
name: String,
|
||||
},
|
||||
}
|
||||
|
||||
/// Skills management subcommands
|
||||
#[derive(Subcommand, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum SkillCommands {
|
||||
/// List all installed skills
|
||||
List,
|
||||
/// Install a new skill from a URL or local path
|
||||
Install {
|
||||
/// Source URL or local path
|
||||
source: String,
|
||||
},
|
||||
/// Remove an installed skill
|
||||
Remove {
|
||||
/// Skill name to remove
|
||||
name: String,
|
||||
},
|
||||
}
|
||||
|
||||
/// Migration subcommands
|
||||
#[derive(Subcommand, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum MigrateCommands {
|
||||
/// Import memory from an `OpenClaw` workspace into this `ZeroClaw` workspace
|
||||
Openclaw {
|
||||
/// Optional path to `OpenClaw` workspace (defaults to ~/.openclaw/workspace)
|
||||
#[arg(long)]
|
||||
source: Option<std::path::PathBuf>,
|
||||
|
||||
/// Validate and preview migration without writing any data
|
||||
#[arg(long)]
|
||||
dry_run: bool,
|
||||
},
|
||||
}
|
||||
|
||||
/// Cron subcommands
|
||||
#[derive(Subcommand, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum CronCommands {
|
||||
/// List all scheduled tasks
|
||||
List,
|
||||
/// Add a new scheduled task
|
||||
Add {
|
||||
/// Cron expression
|
||||
expression: String,
|
||||
/// Command to run
|
||||
command: String,
|
||||
},
|
||||
/// Remove a scheduled task
|
||||
Remove {
|
||||
/// Task ID
|
||||
id: String,
|
||||
},
|
||||
}
|
||||
|
||||
/// Integration subcommands
|
||||
#[derive(Subcommand, Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||||
pub enum IntegrationCommands {
|
||||
/// Show details about a specific integration
|
||||
Info {
|
||||
/// Integration name
|
||||
name: String,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue