use rust_decimal::Decimal; use std::path::PathBuf; use std::str::FromStr; use structopt::StructOpt; mod model; #[derive(Debug)] #[derive(StructOpt)] enum Command { Insert { kind: model::TransactionKind, #[structopt(long)] account: String, // #[structopt(long = "category", multiple = true, number_of_values = 1)] // category: Vec, #[structopt(long)] category: String, #[structopt(long, parse(try_from_str = Decimal::from_str))] amount: Decimal, description: String, }, } #[derive(Debug)] #[derive(StructOpt)] struct Mn { #[structopt(subcommand)] command: Command, } // mn insert expense --account Kortkonto --category a --category b fn main() { let mut store = model::Store::open(PathBuf::from("store")).unwrap(); println!("{:?}", store); match Mn::from_args().command { Command::Insert { kind, account, category, amount, description, } => { let transaction = model::Transaction { kind, to: account, from: "Default".to_string(), category, amount, description }; println!("{:?}", transaction); store.push(transaction); store.write().unwrap(); } } }