diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-07-29 15:42:12 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-07-29 16:25:47 +0200 |
| commit | 750ac56977cd08d850cf902c8c8070512ecf484f (patch) | |
| tree | a8a13634c0bc2dfe653ab52410c7c1a2f4c18dd1 /cli/src | |
| parent | cf79a3180282f08a6165f4b88f52b78a14b9c688 (diff) | |
| download | money-750ac56977cd08d850cf902c8c8070512ecf484f.tar.gz | |
table output and show command
Diffstat (limited to 'cli/src')
| -rw-r--r-- | cli/src/main.rs | 9 | ||||
| -rw-r--r-- | cli/src/transaction.rs | 12 |
2 files changed, 18 insertions, 3 deletions
diff --git a/cli/src/main.rs b/cli/src/main.rs index 071e251..55279b1 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -3,6 +3,7 @@ use rust_decimal::Decimal; use std::path::PathBuf; use std::str::FromStr; use structopt::StructOpt; +use tabled::{Style, Table}; mod search; mod store; @@ -39,7 +40,8 @@ enum Command { }, List { target: ListTarget, - } + }, + Show, } #[derive(Debug)] @@ -70,9 +72,7 @@ fn main() { let mut store = Store::open(PathBuf::from("store")).unwrap(); let search = Search::new(store.transactions().iter().collect()); - println!("{:?}", search.get()); let search = search.subtract(Constraint::Category("a".to_string())); - println!("{:?}", search.get()); let args = Mn::from_args(); eprintln!("{:?}", args); @@ -107,5 +107,8 @@ fn main() { } => { println!("{}", store.categories().join("\n")); } + Command::Show => { + println!("{}", Table::new(store.transactions()).with(Style::psql())); + } } } diff --git a/cli/src/transaction.rs b/cli/src/transaction.rs index 117edfb..8e33aa4 100644 --- a/cli/src/transaction.rs +++ b/cli/src/transaction.rs @@ -2,10 +2,12 @@ use chrono::naive::NaiveDate; use rust_decimal::Decimal; use serde::{Deserialize, Serialize}; use std::convert::AsRef; +use std::fmt; use std::fs; use std::hash::{Hash, Hasher}; use std::path::Path; use structopt::StructOpt; +use tabled::Tabled; use twox_hash::XxHash64; pub(crate) type Account = String; @@ -33,9 +35,19 @@ impl std::str::FromStr for TransactionKind { } } +impl fmt::Display for TransactionKind { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + TransactionKind::Expense => write!(f, "expense"), + TransactionKind::Income => write!(f, "income"), + } + } +} + #[derive(Debug)] #[derive(Hash)] #[derive(Deserialize, Serialize)] +#[derive(Tabled)] pub struct Transaction { pub description: String, pub date: NaiveDate, |
