rtq 0.1.0

an atd like job management tool. run jobs one by one on single host
extern crate chrono;
extern crate clap;
extern crate rtqlib;
extern crate serde;
extern crate serde_json;

use chrono::Local;
use std::env;
use std::time::{SystemTime, UNIX_EPOCH};

use rtqlib::taskdb::{PendingTask, TaskCommand, TaskDB};

fn main() {
    let mut command_vec: Vec<_> = env::args().collect();
    command_vec.drain(0..1);

    println!("adding command {:?}", command_vec);

    let task_cmd = TaskCommand {
        env_vars: env::vars().collect(),
        command: command_vec.clone(),
    };

    let cmd_txt = serde_json::to_string(&task_cmd).unwrap();

    let epoch_ts = SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .expect("time went backwards");
    let epoch_nano = (epoch_ts.as_secs() * 1000_000_000 + epoch_ts.subsec_nanos() as u64) as i64;

    let time_started = format!("{}", Local::now().format("%Y-%m-%d %H:%M:%S"));

    let task_db = TaskDB::new().expect("failed to open task db");

    let pending_task = PendingTask {
        id: epoch_nano,
        command: cmd_txt,
        max_run_sec: 0,
        time_created: time_started,
    };

    task_db.insert_pending_task(&pending_task);
    println!("added task {:?}", command_vec);
}