diff options
author | Akshay <[email protected]> | 2020-07-16 17:17:30 +0100 |
---|---|---|
committer | Akshay <[email protected]> | 2020-07-16 17:17:30 +0100 |
commit | be1540a4ac54a51fce46553303323936165f1735 (patch) | |
tree | 1f499847a807a0306a5b8a4b0287a23371fa29e4 /src/main.rs | |
parent | 7d5e46626110a351104ededeaebdcb9723c7e786 (diff) |
begin work on command line interface
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 39 |
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; | |||
11 | use crate::command::{open_command_window, Command}; | 11 | use crate::command::{open_command_window, Command}; |
12 | use crate::utils::{load_configuration_file, AppConfig}; | 12 | use crate::utils::{load_configuration_file, AppConfig}; |
13 | 13 | ||
14 | use cursive::crossterm; | 14 | use clap::{App as ClapApp, Arg}; |
15 | use cursive::ncurses; | ||
15 | use cursive::views::NamedView; | 16 | use cursive::views::NamedView; |
16 | use lazy_static::lazy_static; | 17 | use lazy_static::lazy_static; |
17 | 18 | ||
@@ -20,11 +21,35 @@ lazy_static! { | |||
20 | } | 21 | } |
21 | 22 | ||
22 | fn main() { | 23 | fn 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 | } |