aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorAkshay <[email protected]>2020-07-16 17:17:30 +0100
committerAkshay <[email protected]>2020-07-16 17:17:30 +0100
commitbe1540a4ac54a51fce46553303323936165f1735 (patch)
tree1f499847a807a0306a5b8a4b0287a23371fa29e4 /src/main.rs
parent7d5e46626110a351104ededeaebdcb9723c7e786 (diff)
begin work on command line interface
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs
index 2313201..3efecd6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -11,7 +11,8 @@ use crate::app::App;
11use crate::command::{open_command_window, Command}; 11use crate::command::{open_command_window, Command};
12use crate::utils::{load_configuration_file, AppConfig}; 12use crate::utils::{load_configuration_file, AppConfig};
13 13
14use cursive::crossterm; 14use clap::{App as ClapApp, Arg};
15use cursive::ncurses;
15use cursive::views::NamedView; 16use cursive::views::NamedView;
16use lazy_static::lazy_static; 17use lazy_static::lazy_static;
17 18
@@ -20,11 +21,35 @@ lazy_static! {
20} 21}
21 22
22fn main() { 23fn main() {
23 let mut s = crossterm().unwrap(); 24 let matches = ClapApp::new(env!("CARGO_PKG_NAME"))
24 let app = App::load_state(); 25 .version(env!("CARGO_PKG_VERSION"))
25 s.add_layer(NamedView::new("Main", app)); 26 .author(env!("CARGO_PKG_AUTHORS"))
26 s.add_global_callback(':', |s| open_command_window(s)); 27 .about(env!("CARGO_PKG_DESCRIPTION"))
28 .arg(
29 Arg::with_name("command")
30 .short("c")
31 .long("command")
32 .takes_value(true)
33 .value_name("CMD")
34 .help("run a dijo command"),
35 )
36 .get_matches();
37 if let Some(c) = matches.value_of("command") {
38 let command = Command::from_string(c);
39 if matches!(command, Command::TrackUp(_) | Command::TrackDown(_)) {
40 let mut app = App::load_state();
41 app.parse_command(command);
42 app.save_state();
43 } else {
44 eprintln!("Invalid or unsupported command!");
45 }
46 } else {
47 let mut s = ncurses().unwrap();
48 let app = App::load_state();
49 s.add_layer(NamedView::new("Main", app));
50 s.add_global_callback(':', |s| open_command_window(s));
27 51
28 s.set_theme(theme::theme_gen()); 52 s.set_theme(theme::theme_gen());
29 s.run(); 53 s.run();
54 }
30} 55}