/crates/core/messages.rs
Rust | 74 lines | 45 code | 10 blank | 19 comment | 3 complexity | ed97fe7fb26b08c4cb13fe14b6b23cd2 MD5 | raw file
Possible License(s): MIT, Unlicense
- use std::sync::atomic::{AtomicBool, Ordering};
- static MESSAGES: AtomicBool = AtomicBool::new(false);
- static IGNORE_MESSAGES: AtomicBool = AtomicBool::new(false);
- static ERRORED: AtomicBool = AtomicBool::new(false);
- /// Emit a non-fatal error message, unless messages were disabled.
- #[macro_export]
- macro_rules! message {
- ($($tt:tt)*) => {
- if crate::messages::messages() {
- eprintln!($($tt)*);
- }
- }
- }
- /// Like message, but sets ripgrep's "errored" flag, which controls the exit
- /// status.
- #[macro_export]
- macro_rules! err_message {
- ($($tt:tt)*) => {
- crate::messages::set_errored();
- message!($($tt)*);
- }
- }
- /// Emit a non-fatal ignore-related error message (like a parse error), unless
- /// ignore-messages were disabled.
- #[macro_export]
- macro_rules! ignore_message {
- ($($tt:tt)*) => {
- if crate::messages::messages() && crate::messages::ignore_messages() {
- eprintln!($($tt)*);
- }
- }
- }
- /// Returns true if and only if messages should be shown.
- pub fn messages() -> bool {
- MESSAGES.load(Ordering::SeqCst)
- }
- /// Set whether messages should be shown or not.
- ///
- /// By default, they are not shown.
- pub fn set_messages(yes: bool) {
- MESSAGES.store(yes, Ordering::SeqCst)
- }
- /// Returns true if and only if "ignore" related messages should be shown.
- pub fn ignore_messages() -> bool {
- IGNORE_MESSAGES.load(Ordering::SeqCst)
- }
- /// Set whether "ignore" related messages should be shown or not.
- ///
- /// By default, they are not shown.
- ///
- /// Note that this is overridden if `messages` is disabled. Namely, if
- /// `messages` is disabled, then "ignore" messages are never shown, regardless
- /// of this setting.
- pub fn set_ignore_messages(yes: bool) {
- IGNORE_MESSAGES.store(yes, Ordering::SeqCst)
- }
- /// Returns true if and only if ripgrep came across a non-fatal error.
- pub fn errored() -> bool {
- ERRORED.load(Ordering::SeqCst)
- }
- /// Indicate that ripgrep has come across a non-fatal error.
- pub fn set_errored() {
- ERRORED.store(true, Ordering::SeqCst);
- }