extern crate chrono;
extern crate fern;
extern crate log;
extern crate structopt;
use structopt::StructOpt;
pub fn parse_args() -> CliOptions { CliOptions::from_args() }
#[derive(StructOpt, Debug)]
#[structopt()]
pub struct CliOptions {
#[structopt(short = "v", long = "verbose")]
pub verbose: bool,
#[structopt(short = "q", long = "quiet")]
pub quiet: bool,
#[structopt(short = "r", long = "retention-days", default_value = "14")]
pub retention_days: u32,
#[structopt(short = "D", long = "delete")]
pub issue_deletions: bool,
#[structopt(raw(required = "true", min_values = "1"))]
pub token: Vec<String>,
}
pub fn setup_logger(level: log::LevelFilter) -> Result<(), fern::InitError> {
fern::Dispatch::new()
.format(move |out, message, record| {
out.finish(format_args!(
"{} [{}] [{}] {}",
chrono::Local::now().format("%Y-%m-%d %H:%M:%S"),
record.target(),
record.level(),
message
))
})
.level(level)
.chain(::std::io::stdout())
.apply()?;
Ok(())
}