feat: parse cli commands with clap
This commit is contained in:
parent
500b1069bb
commit
c46b0bfb71
|
@ -43,6 +43,15 @@ dependencies = [
|
|||
"pkg-config",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ansi_term"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "arrayref"
|
||||
version = "0.3.6"
|
||||
|
@ -61,6 +70,17 @@ version = "0.9.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e"
|
||||
|
||||
[[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 = "autocfg"
|
||||
version = "1.0.1"
|
||||
|
@ -232,6 +252,21 @@ dependencies = [
|
|||
"libloading",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "2.33.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
|
||||
dependencies = [
|
||||
"ansi_term",
|
||||
"atty",
|
||||
"bitflags 1.2.1",
|
||||
"strsim 0.8.0",
|
||||
"textwrap",
|
||||
"unicode-width",
|
||||
"vec_map",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "claxon"
|
||||
version = "0.4.3"
|
||||
|
@ -350,9 +385,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossterm"
|
||||
version = "0.18.2"
|
||||
version = "0.19.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4e86d73f2a0b407b5768d10a8c720cf5d2df49a9efc10ca09176d201ead4b7fb"
|
||||
checksum = "7c36c10130df424b2f3552fcc2ddcd9b28a27b1e54b358b45874f88d1ca6888c"
|
||||
dependencies = [
|
||||
"bitflags 1.2.1",
|
||||
"crossterm_winapi",
|
||||
|
@ -366,9 +401,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossterm_winapi"
|
||||
version = "0.6.2"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c2265c3f8e080075d9b6417aa72293fc71662f34b4af2612d8d1b074d29510db"
|
||||
checksum = "0da8964ace4d3e4a044fd027919b2237000b24315a37c916f61809f1ff2140b9"
|
||||
dependencies = [
|
||||
"winapi",
|
||||
]
|
||||
|
@ -393,7 +428,7 @@ dependencies = [
|
|||
"ident_case",
|
||||
"proc-macro2",
|
||||
"quote 1.0.7",
|
||||
"strsim",
|
||||
"strsim 0.9.3",
|
||||
"syn 1.0.48",
|
||||
]
|
||||
|
||||
|
@ -464,6 +499,7 @@ dependencies = [
|
|||
name = "domasi"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"crossterm",
|
||||
"directories",
|
||||
"notify-rust",
|
||||
|
@ -548,6 +584,15 @@ version = "0.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hound"
|
||||
version = "3.4.0"
|
||||
|
@ -1317,6 +1362,12 @@ version = "0.1.3"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef5430c8e36b713e13b48a9f709cc21e046723fe44ce34587b73a830203b533e"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.9.3"
|
||||
|
@ -1388,6 +1439,15 @@ dependencies = [
|
|||
"xattr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "textwrap"
|
||||
version = "0.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||
dependencies = [
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.21"
|
||||
|
@ -1467,6 +1527,12 @@ dependencies = [
|
|||
"tinyvec 1.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-width"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.0.4"
|
||||
|
@ -1534,6 +1600,12 @@ dependencies = [
|
|||
"percent-encoding 2.1.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "vec_map"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.2"
|
||||
|
|
|
@ -7,7 +7,8 @@ version = "0.1.0"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
notify-rust = "4.0"
|
||||
rodio = "0.13"
|
||||
directories = "3.0"
|
||||
crossterm = "0.18"
|
||||
notify-rust = "^4.0"
|
||||
rodio = "^0.13"
|
||||
directories = "^3.0"
|
||||
crossterm = "^0.19"
|
||||
clap = "^2.33"
|
||||
|
|
41
src/main.rs
41
src/main.rs
|
@ -1,3 +1,4 @@
|
|||
use clap::{App, Arg, SubCommand};
|
||||
use directories::ProjectDirs;
|
||||
use domasi::Alert;
|
||||
use domasi::Domasi;
|
||||
|
@ -5,18 +6,31 @@ use std::fs;
|
|||
use std::path::PathBuf;
|
||||
|
||||
fn main() {
|
||||
let mut args = std::env::args_os();
|
||||
let app = App::new("Domasi")
|
||||
.version("0.1.0")
|
||||
.author("Rekai Musuka <rekai@musuka.dev>")
|
||||
.about("CLI Pomodoro Timer")
|
||||
.arg(
|
||||
Arg::with_name("create-alert-dir")
|
||||
.short("C")
|
||||
.long("create-alert-dir")
|
||||
.help("Creates the alert directory"),
|
||||
)
|
||||
.subcommand(SubCommand::with_name("start").about("Start Pomodoro Timer"));
|
||||
let matches = app.get_matches();
|
||||
|
||||
if let Some(os_string) = args.nth(1) {
|
||||
match os_string.to_str() {
|
||||
Some("-C") | Some("--create-config") => {
|
||||
let _ = create_alert_directory();
|
||||
}
|
||||
None => {}
|
||||
arg => println!("Unsupported Argument: {}", arg.unwrap()),
|
||||
}
|
||||
if matches.is_present("create-alert-dir") {
|
||||
// Create the Alert Directory
|
||||
match create_alert_directory() {
|
||||
Ok(path) => println!("Created {:?}", path),
|
||||
Err(err) => eprintln!("Failed to create Alert Dir: {}", err),
|
||||
}
|
||||
|
||||
return; // Exit main
|
||||
}
|
||||
|
||||
match matches.subcommand() {
|
||||
("start", Some(_sub_match)) => {
|
||||
let mut domasi: Domasi = Default::default();
|
||||
|
||||
match get_alert() {
|
||||
|
@ -24,16 +38,19 @@ fn main() {
|
|||
None => domasi.start(None).unwrap(),
|
||||
}
|
||||
}
|
||||
_ => println!("No argument or subcommand provided."),
|
||||
}
|
||||
}
|
||||
|
||||
fn create_alert_directory() -> std::io::Result<()> {
|
||||
fn create_alert_directory() -> std::io::Result<PathBuf> {
|
||||
let alert_dir = ProjectDirs::from("moe", "paoda", "domasi")
|
||||
.unwrap()
|
||||
.data_dir()
|
||||
.to_path_buf()
|
||||
.join("alert");
|
||||
|
||||
fs::create_dir_all(alert_dir)?;
|
||||
Ok(())
|
||||
fs::create_dir_all(&alert_dir)?;
|
||||
Ok(alert_dir)
|
||||
}
|
||||
|
||||
fn get_alert() -> Option<Alert> {
|
||||
|
|
Loading…
Reference in New Issue