1pub mod cli;
2mod completion_shell;
3pub mod env;
4pub mod error;
5pub mod host_triple;
6pub mod targets;
7pub mod toolchain;
8
9pub mod logging {
10 use env_logger::{Builder, Env, WriteStyle};
11
12 use crate::toolchain::PROCESS_BARS;
13
14 pub fn initialize_logger(log_level: &str) {
16 let logger = Builder::from_env(Env::default().default_filter_or(log_level))
17 .format(|buf, record| {
18 use std::io::Write;
19 writeln!(
20 buf,
21 "[{}]: {}",
22 record.level().to_string().to_lowercase(),
23 record.args()
24 )
25 })
26 .write_style(WriteStyle::Always)
27 .build();
28 let level = logger.filter();
29 indicatif_log_bridge::LogWrapper::new(PROCESS_BARS.clone(), logger)
31 .try_init()
32 .unwrap();
33 log::set_max_level(level);
34 }
35}
36
37pub mod update {
38 use log::warn;
39 use std::time::Duration;
40 use update_informer::{Check, registry};
41
42 pub fn check_for_update(name: &str, version: &str) {
44 let informer =
47 update_informer::new(registry::Crates, name, version).interval(Duration::ZERO);
48
49 if let Some(version) = informer.check_version().ok().flatten() {
50 warn!("A new version of {name} ('{version}') is available");
51 }
52 }
53}