move debug / util macros to lib.rs
This commit is contained in:
parent
0df0d9c5a4
commit
fd27541bbf
84
src/lib.rs
84
src/lib.rs
|
@ -17,9 +17,93 @@ pub fn is_dry_run() -> bool {
|
||||||
env::var("DRY_RUN").map(|v| !v.is_empty()).unwrap_or(false)
|
env::var("DRY_RUN").map(|v| !v.is_empty()).unwrap_or(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Checks environment variable `VERBOSE` to see if status messages should be
|
||||||
|
/// printed.
|
||||||
|
///
|
||||||
|
/// Use [`verboseln!`] to print stuff only if `VERBOSE` (or `TRACE`) is set.
|
||||||
|
pub fn is_verbose() -> bool {
|
||||||
|
env::var("VERBOSE").map(|v| !v.is_empty()).unwrap_or(false)
|
||||||
|
}
|
||||||
|
/// Like [`println!`], but only if [`is_verbose`] (or [`is_trace`]) is true (due to
|
||||||
|
/// the environment variable `VERBOSE` (or `TRACE`) being set.)
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! verboseln {
|
||||||
|
($($arg:tt)*) => {
|
||||||
|
if $crate::is_verbose() || $crate::is_trace() {
|
||||||
|
println!($($arg)*);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// (A. k. a. "*very* verbose".) Checks environment variable `TRACE` to see if
|
||||||
|
/// detailed small-step status messages should be printed.
|
||||||
|
///
|
||||||
|
/// Use [`traceln!`] to print stuff only if `TRACE` is set.
|
||||||
|
pub fn is_trace() -> bool {
|
||||||
|
env::var("TRACE").map(|v| !v.is_empty()).unwrap_or(false)
|
||||||
|
}
|
||||||
|
/// Like [`println!`], but only if [`is_trace`] is true (due to the environment
|
||||||
|
/// variable `TRACE` being set.)
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! traceln {
|
||||||
|
($($arg:tt)*) => {
|
||||||
|
if $crate::is_trace() {
|
||||||
|
println!( "{}", format!($($arg)*).yellow() );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
/// `trace_var!( [msg,] var )` prints either `varname = value` or `msg: value`
|
||||||
|
/// *if `TRACE` is set* (else is silent.)
|
||||||
|
///
|
||||||
|
/// There's an alternative form of `trace_var!( [msg,] var[, true] )` or the
|
||||||
|
/// preferred form of `trace_var_!( [msg,] var )` (i.e. just add an underscore
|
||||||
|
/// to the name), which will use the "pretty" form.
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! trace_var {
|
||||||
|
($var:expr, $pretty:expr) => {
|
||||||
|
if $crate::is_trace() {
|
||||||
|
if $pretty {
|
||||||
|
println!("{} = {}", stringify!($var).green(), format!("{:#?}", $var).cyan());
|
||||||
|
} else {
|
||||||
|
println!("{} = {}", stringify!($var).green(), format!("{:?}", $var).cyan());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
($msg:expr, $var:expr, $pretty:expr) => {
|
||||||
|
if $crate::is_trace() {
|
||||||
|
if $pretty {
|
||||||
|
println!("{}: {}", $msg.green(), format!("{:#?}", $var).cyan());
|
||||||
|
} else {
|
||||||
|
println!("{}: {}", $msg.green(), format!("{:?}", $var).cyan());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
($var:expr) => {
|
||||||
|
trace_var!($var, false);
|
||||||
|
};
|
||||||
|
($msg:expr, $var:expr) => {
|
||||||
|
trace_var!($msg, $var, false);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Pretty form of [`trace_var!`].
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! trace_var_ {
|
||||||
|
($var:expr) => {
|
||||||
|
$crate::trace_var!($var, true);
|
||||||
|
};
|
||||||
|
($msg:expr, $var:expr) => {
|
||||||
|
$crate::trace_var!($msg, $var, true);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Similar to [`todo!`], but non-fatal; `NYI` prints a message to stderr _only once_
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! NYI {
|
macro_rules! NYI {
|
||||||
($msg:expr) => {{
|
($msg:expr) => {{
|
||||||
|
// rely on the non-snake-case warning to get a warning at use sites
|
||||||
|
fn NYI() {}
|
||||||
|
NYI();
|
||||||
static ONCE: std::sync::Once = std::sync::Once::new();
|
static ONCE: std::sync::Once = std::sync::Once::new();
|
||||||
let location = stdext::debug_name!();
|
let location = stdext::debug_name!();
|
||||||
ONCE.call_once(|| {
|
ONCE.call_once(|| {
|
||||||
|
|
77
src/main.rs
77
src/main.rs
|
@ -48,6 +48,7 @@ use cccron_lib::email::{self, Email, SimpleEmail};
|
||||||
use cccron_lib::hedgedoc::{self, HedgeDoc};
|
use cccron_lib::hedgedoc::{self, HedgeDoc};
|
||||||
use cccron_lib::is_dry_run;
|
use cccron_lib::is_dry_run;
|
||||||
use cccron_lib::mediawiki::{self, Mediawiki};
|
use cccron_lib::mediawiki::{self, Mediawiki};
|
||||||
|
use cccron_lib::{verboseln,trace_var,trace_var_};
|
||||||
use cccron_lib::NYI;
|
use cccron_lib::NYI;
|
||||||
|
|
||||||
/* ***** Config Spec ***** */
|
/* ***** Config Spec ***** */
|
||||||
|
@ -113,82 +114,6 @@ const CONFIG_SPEC: CfgSpec<'static> = CfgSpec {
|
||||||
|
|
||||||
/* ***** Runtime Configuration (Arguments & Environment Variables) ***** */
|
/* ***** Runtime Configuration (Arguments & Environment Variables) ***** */
|
||||||
|
|
||||||
/// Checks environment variable `VERBOSE` to see if status messages should be
|
|
||||||
/// printed.
|
|
||||||
///
|
|
||||||
/// Use `verboseln!` to print stuff only if `VERBOSE` (or `TRACE`) is set.
|
|
||||||
fn is_verbose() -> bool {
|
|
||||||
env::var("VERBOSE").map(|v| !v.is_empty()).unwrap_or(false)
|
|
||||||
}
|
|
||||||
/// Like `println!`, but only if `is_verbose` (or `is_trace`) is true (due to
|
|
||||||
/// the environment variable `VERBOSE` being set.)
|
|
||||||
macro_rules! verboseln {
|
|
||||||
($($arg:tt)*) => {
|
|
||||||
if is_verbose() || is_trace() {
|
|
||||||
println!($($arg)*);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// (A. k. a. "*very* verbose".) Checks environment variable `TRACE` to see if
|
|
||||||
/// detailed small-step status messages should be printed.
|
|
||||||
///
|
|
||||||
/// Use `traceln!` to print stuff only if `TRACE` is set.
|
|
||||||
fn is_trace() -> bool {
|
|
||||||
env::var("TRACE").map(|v| !v.is_empty()).unwrap_or(false)
|
|
||||||
}
|
|
||||||
/// Like `println!`, but only if `is_trace` is true (due to the environment
|
|
||||||
/// variable `TRACE` being set.)
|
|
||||||
macro_rules! traceln {
|
|
||||||
($($arg:tt)*) => {
|
|
||||||
if is_trace() {
|
|
||||||
println!( "{}", format!($($arg)*).yellow() );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
/// `trace_var!( [msg,] var )` prints either `varname = value` or `msg: value`
|
|
||||||
/// *if TRACE is set* (else is silent.)
|
|
||||||
///
|
|
||||||
/// There's an alternative form of `trace_var!( [msg,] var[, true] )` or the
|
|
||||||
/// preferred form of `trace_var_!( [msg,] var )` (i.e. just add an underscore
|
|
||||||
/// to the name), which will use the "pretty" form.
|
|
||||||
macro_rules! trace_var {
|
|
||||||
($var:expr, $pretty:expr) => {
|
|
||||||
if is_trace() {
|
|
||||||
if $pretty {
|
|
||||||
println!("{} = {}", stringify!($var).green(), format!("{:#?}", $var).cyan());
|
|
||||||
} else {
|
|
||||||
println!("{} = {}", stringify!($var).green(), format!("{:?}", $var).cyan());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
($msg:expr, $var:expr, $pretty:expr) => {
|
|
||||||
if is_trace() {
|
|
||||||
if $pretty {
|
|
||||||
println!("{}: {}", $msg.green(), format!("{:#?}", $var).cyan());
|
|
||||||
} else {
|
|
||||||
println!("{}: {}", $msg.green(), format!("{:?}", $var).cyan());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
($var:expr) => {
|
|
||||||
trace_var!($var, false);
|
|
||||||
};
|
|
||||||
($msg:expr, $var:expr) => {
|
|
||||||
trace_var!($msg, $var, false);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Pretty form of `trace_var!`
|
|
||||||
macro_rules! trace_var_ {
|
|
||||||
($var:expr) => {
|
|
||||||
trace_var!($var, true);
|
|
||||||
};
|
|
||||||
($msg:expr, $var:expr) => {
|
|
||||||
trace_var!($msg, $var, true);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Gets either today or the date from the environment variable `TODAY` (for
|
/// Gets either today or the date from the environment variable `TODAY` (for
|
||||||
/// testing purposes.)
|
/// testing purposes.)
|
||||||
fn today() -> NaiveDate {
|
fn today() -> NaiveDate {
|
||||||
|
|
Loading…
Reference in a new issue