mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-11-07 09:45:36 +00:00
45 lines
1.3 KiB
Rust
45 lines
1.3 KiB
Rust
use clap::{Args, Subcommand};
|
|
|
|
use crate::config::{config_path, ensure_default_config, get_config_value, set_config_value};
|
|
use crate::error::IdxError;
|
|
|
|
#[derive(Debug, Args)]
|
|
#[command(about = "Manage configuration")]
|
|
pub struct ConfigCmd {
|
|
#[command(subcommand)]
|
|
pub command: ConfigSubcommand,
|
|
}
|
|
|
|
#[derive(Debug, Subcommand)]
|
|
pub enum ConfigSubcommand {
|
|
#[command(about = "Create default configuration file")]
|
|
Init,
|
|
#[command(about = "Get a configuration value by key")]
|
|
Get { key: String },
|
|
#[command(about = "Set a configuration value by key")]
|
|
Set { key: String, value: String },
|
|
#[command(about = "Print configuration file path")]
|
|
Path,
|
|
}
|
|
|
|
pub fn handle(cmd: &ConfigCmd) -> Result<(), IdxError> {
|
|
match &cmd.command {
|
|
ConfigSubcommand::Init => {
|
|
let path = ensure_default_config()?;
|
|
println!("{}", path.display());
|
|
}
|
|
ConfigSubcommand::Get { key } => {
|
|
let value = get_config_value(key)?
|
|
.ok_or_else(|| IdxError::ConfigError(format!("key not found: {key}")))?;
|
|
println!("{value}");
|
|
}
|
|
ConfigSubcommand::Set { key, value } => {
|
|
set_config_value(key, value)?;
|
|
println!("ok");
|
|
}
|
|
ConfigSubcommand::Path => {
|
|
println!("{}", config_path()?.display());
|
|
}
|
|
}
|
|
Ok(())
|
|
}
|