2016-05-10 13:54:46 +00:00
|
|
|
extern crate clap;
|
|
|
|
extern crate glob;
|
2016-06-08 12:25:29 +00:00
|
|
|
extern crate task_hookrs;
|
2016-05-10 13:54:46 +00:00
|
|
|
#[macro_use] extern crate log;
|
|
|
|
extern crate semver;
|
|
|
|
extern crate toml;
|
|
|
|
#[macro_use] extern crate version;
|
|
|
|
|
|
|
|
extern crate libimagrt;
|
|
|
|
extern crate libimagstore;
|
|
|
|
extern crate libimagutil;
|
|
|
|
|
|
|
|
use std::process::exit;
|
2016-06-07 21:45:49 +00:00
|
|
|
use std::process::{Command, Stdio};
|
2016-06-08 12:25:29 +00:00
|
|
|
use std::error::Error;
|
2016-05-10 13:54:46 +00:00
|
|
|
|
|
|
|
use libimagrt::runtime::Runtime;
|
2016-06-08 12:25:29 +00:00
|
|
|
use std::process::Output;
|
|
|
|
use std::io::Write;
|
|
|
|
use std::io::Read;
|
2016-05-10 13:54:46 +00:00
|
|
|
|
|
|
|
mod ui;
|
|
|
|
|
|
|
|
use ui::build_ui;
|
|
|
|
|
2016-04-20 17:23:35 +00:00
|
|
|
fn main() {
|
2016-05-10 14:28:35 +00:00
|
|
|
let name = "imag-todo";
|
|
|
|
let version = &version!()[..];
|
|
|
|
let about = "Interface with taskwarrior";
|
|
|
|
let ui = build_ui(Runtime::get_default_cli_builder(name, version, about));
|
2016-06-07 21:45:49 +00:00
|
|
|
|
2016-05-10 14:28:35 +00:00
|
|
|
let rt = {
|
|
|
|
let rt = Runtime::new(ui);
|
|
|
|
if rt.is_ok() {
|
|
|
|
rt.unwrap()
|
|
|
|
} else {
|
|
|
|
println!("Could not set up Runtime");
|
|
|
|
println!("{:?}", rt.unwrap_err());
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-06-07 21:45:49 +00:00
|
|
|
|
|
|
|
|
2016-05-10 14:28:35 +00:00
|
|
|
let scmd = rt.cli().subcommand_name();
|
|
|
|
match scmd {
|
|
|
|
Some("tw-hook") => {
|
|
|
|
let subcmd = rt.cli().subcommand_matches("tw-hook").unwrap();
|
|
|
|
if subcmd.is_present("add") {
|
|
|
|
println!("To be implemented");
|
|
|
|
//
|
|
|
|
// TODO @Kevin: import function aus task_hookrs benutzen, um
|
|
|
|
// stdin auszulesen, und dann auf dem
|
|
|
|
// task_hookrs::task::Task den Trait für die
|
|
|
|
// Umwandlung aufrufen.
|
|
|
|
//
|
|
|
|
}
|
|
|
|
else if subcmd.is_present("delete") {
|
|
|
|
println!("To be implemented");
|
|
|
|
//
|
|
|
|
// Functionality to delete Entry in the store
|
|
|
|
//
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
// Should not be possible, as one argument is required via
|
|
|
|
// ArgGroup
|
|
|
|
panic!("Reached unreachable Code");
|
|
|
|
}
|
|
|
|
},
|
|
|
|
Some("exec") => {
|
2016-06-07 21:45:49 +00:00
|
|
|
let subcmd = rt.cli().subcommand_matches("exec").unwrap();
|
2016-06-08 12:25:29 +00:00
|
|
|
let mut args = Vec::new();
|
|
|
|
if let Some(exec_string) = subcmd.values_of("command") {
|
|
|
|
for e in exec_string {
|
|
|
|
args.push(e);
|
2016-06-07 21:45:49 +00:00
|
|
|
}
|
2016-06-08 12:25:29 +00:00
|
|
|
let mut tw_process = Command::new("/usr/local/bin/task").stdin(Stdio::null()).args(&args).spawn().unwrap();
|
|
|
|
//let erg = tw_process.args(&args).spawn().unwrap(); //{
|
|
|
|
// Ok(_) => debug!("Executed command:\n"),
|
|
|
|
// Err(e) => debug!("Failed to execute command: {:#?}", e),
|
|
|
|
//}
|
|
|
|
let output = tw_process.wait_with_output().unwrap();
|
|
|
|
let outstring = String::from_utf8(output.stdout).unwrap();
|
|
|
|
println!("{}", outstring);
|
|
|
|
//let mut s = String::new();
|
|
|
|
//match tw_process.stdout.unwrap().read_to_string(&mut s) {
|
|
|
|
//Err(err) => panic!("couldn't read taskwarrior stdout: {}",
|
|
|
|
// err.description()),
|
|
|
|
//Ok(_) => print!("taskwarrior responded with:\n{}", s),
|
|
|
|
//}
|
2016-06-07 21:45:49 +00:00
|
|
|
} else {
|
2016-06-08 12:25:29 +00:00
|
|
|
println!("You need '--command'");
|
2016-06-07 21:45:49 +00:00
|
|
|
}
|
2016-06-01 14:05:43 +00:00
|
|
|
},
|
2016-06-08 12:25:29 +00:00
|
|
|
_ => panic!("Reached unreachable Code"),
|
2016-06-01 14:05:43 +00:00
|
|
|
}
|
2016-06-07 21:45:49 +00:00
|
|
|
|
2016-04-20 17:23:35 +00:00
|
|
|
}
|
2016-06-01 14:05:43 +00:00
|
|
|
|