apt-mirror-check 1.0.0

Check errors for apt mirror
Documentation
use log::kv::{Key, Value, VisitSource};
use std::io;

struct KvsVisitor<'a> {
    buf: &'a mut env_logger::fmt::Formatter,
}

impl<'a, 'kvs> VisitSource<'kvs> for KvsVisitor<'a> {
    fn visit_pair(&mut self, k: Key<'kvs>, v: Value<'kvs>) -> Result<(), log::kv::Error> {
        use std::io::Write;
        write!(self.buf, " {}={}", k, v).map_err(|e| log::kv::Error::from(e))
    }
}

pub fn init(verbose: u8) {
    env_logger::builder()
        .filter_level(match verbose {
            0 => log::LevelFilter::Off,
            1 => log::LevelFilter::Error,
            2 => log::LevelFilter::Warn,
            3 => log::LevelFilter::Info,
            4 => log::LevelFilter::Debug,
            _ => log::LevelFilter::Trace,
        })
        .format_key_values(|mut buf, rec| {
            let mut visitor = KvsVisitor { buf: &mut buf };
            rec.visit(&mut visitor).map_err(|err| io::Error::other(err))
        })
        .format_timestamp(None)
        .init();
}