Julio Biason
3 years ago
commit
f7bf43ca88
6 changed files with 219 additions and 0 deletions
@ -0,0 +1,113 @@
|
||||
# This file is automatically @generated by Cargo. |
||||
# It is not intended for manual editing. |
||||
[[package]] |
||||
name = "ansi_term" |
||||
version = "0.11.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" |
||||
dependencies = [ |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "atty" |
||||
version = "0.2.14" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" |
||||
dependencies = [ |
||||
"hermit-abi", |
||||
"libc", |
||||
"winapi", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "bitflags" |
||||
version = "1.2.1" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" |
||||
|
||||
[[package]] |
||||
name = "clap" |
||||
version = "2.33.3" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" |
||||
dependencies = [ |
||||
"ansi_term", |
||||
"atty", |
||||
"bitflags", |
||||
"strsim", |
||||
"textwrap", |
||||
"unicode-width", |
||||
"vec_map", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "fernico" |
||||
version = "0.1.0" |
||||
dependencies = [ |
||||
"clap", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "hermit-abi" |
||||
version = "0.1.18" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" |
||||
dependencies = [ |
||||
"libc", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "libc" |
||||
version = "0.2.94" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" |
||||
|
||||
[[package]] |
||||
name = "strsim" |
||||
version = "0.8.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" |
||||
|
||||
[[package]] |
||||
name = "textwrap" |
||||
version = "0.11.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" |
||||
dependencies = [ |
||||
"unicode-width", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "unicode-width" |
||||
version = "0.1.8" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" |
||||
|
||||
[[package]] |
||||
name = "vec_map" |
||||
version = "0.8.2" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" |
||||
|
||||
[[package]] |
||||
name = "winapi" |
||||
version = "0.3.9" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" |
||||
dependencies = [ |
||||
"winapi-i686-pc-windows-gnu", |
||||
"winapi-x86_64-pc-windows-gnu", |
||||
] |
||||
|
||||
[[package]] |
||||
name = "winapi-i686-pc-windows-gnu" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" |
||||
|
||||
[[package]] |
||||
name = "winapi-x86_64-pc-windows-gnu" |
||||
version = "0.4.0" |
||||
source = "registry+https://github.com/rust-lang/crates.io-index" |
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" |
@ -0,0 +1,10 @@
|
||||
[package] |
||||
name = "fernico" |
||||
version = "0.1.0" |
||||
authors = ["Julio Biason <julio.biason@pm.me>"] |
||||
edition = "2018" |
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||
|
||||
[dependencies] |
||||
clap = "2.33" |
@ -0,0 +1,71 @@
|
||||
/* |
||||
Fernico - Finance Storage |
||||
Copyright (C) 2021 Julio Biason |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU Affero General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU Affero General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU Affero General Public License |
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
use clap::crate_authors; |
||||
use clap::crate_description; |
||||
use clap::crate_name; |
||||
use clap::crate_version; |
||||
use clap::App; |
||||
use clap::Arg; |
||||
use clap::ArgMatches; |
||||
use clap::SubCommand; |
||||
|
||||
pub(crate) fn cli() { |
||||
let interface = App::new(crate_name!()) |
||||
.version(crate_version!()) |
||||
.author(crate_authors!()) |
||||
.about(crate_description!()) |
||||
.subcommand( |
||||
SubCommand::with_name("expense") |
||||
.about("Expense management") |
||||
.subcommand( |
||||
SubCommand::with_name("add") |
||||
.about("Add a new expense") |
||||
.arg(Arg::with_name("date") |
||||
.short("d") |
||||
.long("date") |
||||
.help("Date for the expense") |
||||
.long_help("Required only if you want to register an expense not in the current date")) |
||||
.arg(Arg::with_name("value").help("Amount spent on expense")) |
||||
.arg(Arg::with_name("tags").help("Tags for the expense").multiple(true)) |
||||
), |
||||
); |
||||
let matches = interface.get_matches(); |
||||
match matches.subcommand() { |
||||
("expense", Some(expense_arguments)) => { |
||||
parse_expenses(expense_arguments) |
||||
} |
||||
_ => {} |
||||
} |
||||
} |
||||
|
||||
fn parse_expenses(args: &ArgMatches) { |
||||
println!("{:?}", args); |
||||
match args.subcommand() { |
||||
("add", Some(params)) => { |
||||
let value = params.value_of("value").unwrap(); // ok_or(Errors)
|
||||
let tags = params.values_of("tags").unwrap(); |
||||
let date = params.value_of("date").ok_or("Today"); |
||||
println!( |
||||
"Add expense on {:?}, of {:?}, with tags {:?}", |
||||
date, value, tags |
||||
); |
||||
} |
||||
_ => {} |
||||
} |
||||
} |
@ -0,0 +1,23 @@
|
||||
/* |
||||
Fernico - Finance Storage |
||||
Copyright (C) 2021 Julio Biason |
||||
|
||||
This program is free software: you can redistribute it and/or modify |
||||
it under the terms of the GNU Affero General Public License as published by |
||||
the Free Software Foundation, either version 3 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU Affero General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU Affero General Public License |
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
mod args; |
||||
|
||||
fn main() { |
||||
args::cli(); |
||||
} |
Loading…
Reference in new issue