use std::path::PathBuf;
use clap::Parser;
#[derive(Parser)]
#[command(name = "git ledger", bin_name = "git ledger")]
#[command(
author,
version,
about = "Git-native record storage.",
long_about = None
)]
pub struct Cli {
#[arg(short = 'C', long, global = true)]
pub repo: Option<PathBuf>,
#[command(subcommand)]
pub command: Command,
}
#[derive(clap::Subcommand)]
pub enum Command {
Create {
ref_prefix: String,
id: Option<String>,
#[arg(long)]
content_hash: bool,
#[arg(long = "set", value_name = "KEY[=VALUE]")]
fields: Vec<String>,
#[arg(long = "file", value_name = "[KEY=]PATH")]
files: Vec<String>,
#[arg(short, long, default_value = "ledger: create")]
message: String,
},
Read {
#[arg(name = "ref")]
ref_name: String,
},
Update {
#[arg(name = "ref")]
ref_name: String,
#[arg(long = "set", value_name = "KEY[=VALUE]")]
fields: Vec<String>,
#[arg(long = "file", value_name = "[KEY=]PATH")]
files: Vec<String>,
#[arg(long = "delete", value_name = "KEY")]
deletes: Vec<String>,
#[arg(short, long, default_value = "ledger: update")]
message: String,
},
List {
ref_prefix: String,
},
Log {
#[arg(name = "ref")]
ref_name: String,
},
}