use clap::{Parser, Subcommand};
pub use config::ConfigManager;
pub use logging::LogFormatter;
pub use utils::ProgressBar;
pub mod commands;
pub mod config;
pub mod logging;
pub mod utils;
#[derive(Parser)]
#[command(name = "kotoba")]
#[command(about = "Kotoba - GP2-based Graph Rewriting Language")]
#[command(version = env!("CARGO_PKG_VERSION"))]
pub struct Cli {
#[command(subcommand)]
pub command: Commands,
}
#[derive(Subcommand)]
pub enum Commands {
Info {
#[arg(short, long)]
verbose: bool,
},
#[command(subcommand)]
Docs(DocsCommand),
}
#[derive(Subcommand)]
pub enum DocsCommand {
Generate {
#[arg(short, long, default_value = "src")]
source: String,
#[arg(short, long, default_value = "docs")]
output: String,
#[arg(short, long)]
config: Option<String>,
#[arg(short, long)]
watch: bool,
},
Serve {
#[arg(short, long, default_value = "3000")]
port: u16,
#[arg(short, long, default_value = "127.0.0.1")]
host: String,
#[arg(short, long, default_value = "docs")]
dir: String,
#[arg(short, long)]
open: bool,
},
Search {
query: String,
#[arg(short, long, default_value = "docs")]
dir: String,
#[arg(short, long)]
json: bool,
},
Init {
#[arg(short, long, default_value = "kdoc.toml")]
config: String,
#[arg(short, long)]
force: bool,
},
}