Skip to content

Commit

Permalink
Merge pull request #509 from ouch-org/fix-unaligned-messages
Browse files Browse the repository at this point in the history
fix unaligned output when using parallelism
  • Loading branch information
figsoda authored Sep 20, 2023
2 parents 86524ae + 10d530d commit b7da9b0
Showing 1 changed file with 29 additions and 11 deletions.
40 changes: 29 additions & 11 deletions src/macros.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
//! Macros used on ouch.
use std::io;

/// Macro that prints \[INFO\] messages, wraps [`eprintln`].
///
/// There are essentially two different versions of the `info!()` macro:
Expand All @@ -19,24 +21,32 @@ macro_rules! info {
// Accessible (short/important) info message.
// Show info message even in ACCESSIBLE mode
(accessible, $($arg:tt)*) => {{
use $crate::utils::colors::{YELLOW, RESET};
use ::std::io::{stderr, Write};

use $crate::{macros::stderr_check, utils::colors::{YELLOW, RESET}};

let mut stderr = stderr().lock();

if $crate::accessible::is_running_in_accessible_mode() {
eprint!("{}Info:{} ", *YELLOW, *RESET);
stderr_check(write!(stderr, "{}Info:{} ", *YELLOW, *RESET));
} else {
eprint!("{}[INFO]{} ", *YELLOW, *RESET);
stderr_check(write!(stderr, "{}[INFO]{} ", *YELLOW, *RESET));
}

eprintln!($($arg)*);
stderr_check(writeln!(stderr, $($arg)*));
}};
// Inccessible (long/no important) info message.
// Print info message if ACCESSIBLE is not turned on
(inaccessible, $($arg:tt)*) => {{
use $crate::utils::colors::{YELLOW, RESET};
use ::std::io::{stderr, Write};

use $crate::{macros::stderr_check, utils::colors::{YELLOW, RESET}};

let mut stderr = stderr().lock();

if !$crate::accessible::is_running_in_accessible_mode() {
eprint!("{}[INFO]{} ", *YELLOW, *RESET);
eprintln!($($arg)*);
stderr_check(write!(stderr, "{}[INFO]{} ", *YELLOW, *RESET));
stderr_check(writeln!(stderr, $($arg)*));
}
}};
}
Expand All @@ -45,14 +55,22 @@ macro_rules! info {
#[macro_export]
macro_rules! warning {
($($arg:tt)*) => {{
use $crate::utils::colors::{ORANGE, RESET};
use ::std::io::{stderr, Write};

use $crate::{macros::stderr_check, utils::colors::{ORANGE, RESET}};

let mut stderr = stderr().lock();

if $crate::accessible::is_running_in_accessible_mode() {
eprint!("{}Warning:{} ", *ORANGE, *RESET);
stderr_check(write!(stderr, "{}Warning:{} ", *ORANGE, *RESET));
} else {
eprint!("{}[WARNING]{} ", *ORANGE, *RESET);
stderr_check(write!(stderr, "{}[WARNING]{} ", *ORANGE, *RESET));
}

eprintln!($($arg)*);
stderr_check(writeln!(stderr, $($arg)*));
}};
}

pub fn stderr_check(result: io::Result<()>) {
result.expect("failed printing to stderr");
}

0 comments on commit b7da9b0

Please sign in to comment.