From e9ce7c44f15a6e03df5d5c4837f8b4d86841cd1f Mon Sep 17 00:00:00 2001 From: licunlong Date: Wed, 5 Jul 2023 16:42:08 +0800 Subject: [PATCH] fix: add two helper macroes to help us log message out when we operate a file or directory easily --- libs/basic/src/fs_util.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libs/basic/src/fs_util.rs b/libs/basic/src/fs_util.rs index ec814e2..3aa93e9 100644 --- a/libs/basic/src/fs_util.rs +++ b/libs/basic/src/fs_util.rs @@ -310,6 +310,31 @@ pub fn touch_file( fchmod_and_chown(fd, path, mode, uid, gid) } +/// do some operations and log message out, returns Io error when fail +#[macro_export] +macro_rules! do_entry_or_return_io_error { + ($function:expr, $entry:ident, $action:literal) => { + match $function(&$entry) { + Err(e) => { + log::error!("Failed to {} {:?}: {e}", $action, $entry); + return Err(e).context(IoSnafu); + } + Ok(_) => log::debug!("{} {:?} succeeded", $action, $entry), + } + }; +} + +/// do some operations and log message out, skip the error +#[macro_export] +macro_rules! do_entry_log { + ($function:expr, $entry:ident, $action:literal) => { + match $function(&$entry) { + Err(e) => log::error!("Failed to {} {:?}: {e}", $action, $entry), + Ok(_) => log::debug!("{} {:?} succeeded", $action, $entry), + } + }; +} + #[cfg(test)] mod tests { use super::*; -- 2.33.0