use std::io::Write;
pub fn init_logger() -> env_logger::Builder {
let mut builder = env_logger::Builder::from_default_env();
builder.target(env_logger::Target::Stderr);
builder.filter(None, get_log_level());
builder.write_style(env_logger::WriteStyle::Always);
if std::env::var("CI").is_ok() {
builder.format(|buf, record| match record.level().as_str() {
"DEBUG" => writeln!(buf, "::debug:: {}", record.args()),
"WARN" => writeln!(buf, "::warning:: {}", record.args()),
"ERROR" => {
writeln!(buf, "::error:: {}", record.args())
}
_ => writeln!(buf, "{}", record.args()),
});
}
builder
}
fn get_log_level() -> log::LevelFilter {
match std::env::var("DEBUG") {
Ok(_value) => return log::LevelFilter::Debug,
Err(_err) => (),
}
match std::env::var("ACTIONS_RUNNER_DEBUG") {
Ok(_value) => return log::LevelFilter::Debug,
Err(_err) => (),
};
log::LevelFilter::Info
}
#[macro_export]
macro_rules! group {
($($arg:tt)*) => {
let title = format!($($arg)*);
if std::env::var("CI").is_ok() {
eprintln!("::group::{}", title)
} else {
log!(log::Level::Info, "{}", title)
}
};
}
#[macro_export]
macro_rules! group_info {
($($arg:tt)*) => {
let title = format!($($arg)*);
if std::env::var("CI").is_ok() {
eprintln!("{}", title)
} else {
log!(log::Level::Info, "{}", title)
}
};
}
#[macro_export]
macro_rules! group_error {
($($arg:tt)*) => {
let title = format!($($arg)*);
if std::env::var("CI").is_ok() {
eprintln!("{}", title)
} else {
log!(log::Level::Error, "{}", title)
}
};
}
#[macro_export]
macro_rules! endgroup {
() => {
if std::env::var("CI").is_ok() {
eprintln!("::endgroup::")
}
};
}