#![warn(unreachable_pub)]
#![warn(clippy::doc_markdown)]
#![warn(clippy::needless_pass_by_value)]
#![warn(clippy::redundant_closure_for_method_calls)]
#![warn(clippy::semicolon_if_nothing_returned)]
#![warn(clippy::wildcard_imports)]
use anstyle::AnsiColor;
use chezmoi_modify_manager::{inner_main, parse_args};
use env_logger::{Builder, Env};
use log::Level;
use std::io::{stdin, stdout};
use std::io::{BufWriter, Write};
fn main() -> anyhow::Result<()> {
let mut builder = Builder::from_env(Env::default().default_filter_or("warn"));
builder.target(env_logger::Target::Pipe(Box::new(anstream::stderr())));
builder.format(|buf, record| {
let colour = match record.level() {
Level::Error => AnsiColor::Red,
Level::Warn => AnsiColor::Yellow,
Level::Info => AnsiColor::Green,
Level::Debug => AnsiColor::Blue,
Level::Trace => AnsiColor::Cyan,
}
.on_default();
writeln!(
buf,
"[chezmoi_modify_manager {}{}{}] {}",
colour.render(),
record.level(),
colour.render_reset(),
record.args()
)
});
builder.init();
let opts = parse_args();
inner_main(opts, || stdin().lock(), || BufWriter::new(stdout().lock()))
}