From be1540a4ac54a51fce46553303323936165f1735 Mon Sep 17 00:00:00 2001 From: Akshay Date: Thu, 16 Jul 2020 21:47:30 +0530 Subject: begin work on command line interface --- src/main.rs | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'src/main.rs') 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; use crate::command::{open_command_window, Command}; use crate::utils::{load_configuration_file, AppConfig}; -use cursive::crossterm; +use clap::{App as ClapApp, Arg}; +use cursive::ncurses; use cursive::views::NamedView; use lazy_static::lazy_static; @@ -20,11 +21,35 @@ lazy_static! { } fn main() { - let mut s = crossterm().unwrap(); - let app = App::load_state(); - s.add_layer(NamedView::new("Main", app)); - s.add_global_callback(':', |s| open_command_window(s)); + let matches = ClapApp::new(env!("CARGO_PKG_NAME")) + .version(env!("CARGO_PKG_VERSION")) + .author(env!("CARGO_PKG_AUTHORS")) + .about(env!("CARGO_PKG_DESCRIPTION")) + .arg( + Arg::with_name("command") + .short("c") + .long("command") + .takes_value(true) + .value_name("CMD") + .help("run a dijo command"), + ) + .get_matches(); + if let Some(c) = matches.value_of("command") { + let command = Command::from_string(c); + if matches!(command, Command::TrackUp(_) | Command::TrackDown(_)) { + let mut app = App::load_state(); + app.parse_command(command); + app.save_state(); + } else { + eprintln!("Invalid or unsupported command!"); + } + } else { + let mut s = ncurses().unwrap(); + let app = App::load_state(); + s.add_layer(NamedView::new("Main", app)); + s.add_global_callback(':', |s| open_command_window(s)); - s.set_theme(theme::theme_gen()); - s.run(); + s.set_theme(theme::theme_gen()); + s.run(); + } } -- cgit v1.2.3