From 0087d2848a11152b5aa0073fc086b717e16cb014 Mon Sep 17 00:00:00 2001 From: _cry64 Date: Fri, 10 Apr 2026 10:11:24 +1000 Subject: [PATCH] move verbosity.rs -> logging.rs --- nixide/src/lib.rs | 3 +- nixide/src/logging.rs | 76 +++++++++++++++++++++++++++++++++++++++++ nixide/src/verbosity.rs | 36 ------------------- 3 files changed, 77 insertions(+), 38 deletions(-) create mode 100644 nixide/src/logging.rs delete mode 100644 nixide/src/verbosity.rs diff --git a/nixide/src/lib.rs b/nixide/src/lib.rs index 6b336f2..f0b056c 100644 --- a/nixide/src/lib.rs +++ b/nixide/src/lib.rs @@ -8,10 +8,10 @@ pub extern crate nixide_sys as sys; pub(crate) mod errors; mod init; +pub mod logging; mod nix_settings; mod stdext; pub(crate) mod util; -mod verbosity; mod version; #[cfg(feature = "exprs")] @@ -23,7 +23,6 @@ mod store; pub use errors::{NixError, NixideError, NixideResult}; pub use nix_settings::{get_global_setting, set_global_setting}; -pub use verbosity::{NixVerbosity, set_verbosity}; pub use version::NixVersion; #[cfg(feature = "exprs")] diff --git a/nixide/src/logging.rs b/nixide/src/logging.rs new file mode 100644 index 0000000..87386e5 --- /dev/null +++ b/nixide/src/logging.rs @@ -0,0 +1,76 @@ +use crate::errors::ErrorContext; +use crate::stdext::AsCPtr as _; +use crate::sys; +use crate::util::wrap; +use crate::util::wrappers::AsInnerPtr as _; + +pub use sys::NixVerbosity; + +/// Sets the verbosity level. +/// +/// **This function should never fail!** +/// A panic would indicate a bug in nixide itself. +/// +/// # Nix C++ API Internals +/// +/// ```cpp +/// nix_err nix_set_verbosity(nix_c_context * context, nix_verbosity level) +/// { +/// if (context) +/// context->last_err_code = NIX_OK; +/// if (level > NIX_LVL_VOMIT || level < NIX_LVL_ERROR) +/// return nix_set_err_msg(context, NIX_ERR_UNKNOWN, "Invalid verbosity level"); +/// try { +/// nix::verbosity = static_cast(level); +/// } catch (...) { +/// return nix_context_error(context); +/// } +/// return NIX_OK; +/// } +/// ``` +/// +pub fn set_verbosity(level: NixVerbosity) { + wrap::nix_fn!(|ctx: &ErrorContext| unsafe { + sys::nix_set_verbosity(ctx.as_ptr(), level); + }) + .unwrap() +} + +/// The log formats `libnix` can output. +/// +/// # Nix C++ API Internals +/// +/// Defined in `/libmain/include/nix/main/loggers.hh`. +/// +pub enum LogFormat { + Raw, + RawWithLogs, + InternalJSON, + Bar, + BarWithLogs, +} + +impl ToString for LogFormat { + fn to_string(&self) -> String { + match self { + LogFormat::Raw => "raw".to_owned(), + LogFormat::RawWithLogs => "raw-with-logs".to_owned(), + LogFormat::InternalJSON => "internal-json".to_owned(), + LogFormat::Bar => "bar".to_owned(), + LogFormat::BarWithLogs => "bar-with-logs".to_owned(), + } + } +} + +/// Configure the global (default) logger's output format. +/// +/// **This function should never fail!** +/// A panic would indicate a nix's `enum LogFormat` has been +/// modified without nixide updating to account for this. +/// +pub fn set_log_format(format: LogFormat) { + wrap::nix_fn!(|ctx: &ErrorContext| unsafe { + sys::nix_set_log_format(ctx.as_ptr(), format.to_string().as_c_ptr().unwrap()); + }) + .unwrap() +} diff --git a/nixide/src/verbosity.rs b/nixide/src/verbosity.rs deleted file mode 100644 index 8e1b2c0..0000000 --- a/nixide/src/verbosity.rs +++ /dev/null @@ -1,36 +0,0 @@ -use crate::errors::ErrorContext; -use crate::sys; -use crate::util::wrap; -use crate::util::wrappers::AsInnerPtr as _; - -pub use sys::NixVerbosity; - -/// Sets the verbosity level. -/// -/// **This function should never fail!** -/// A panic would indicate a bug in nixide itself. -/// -/// # Nix C++ API Internals -/// -/// ```cpp -/// nix_err nix_set_verbosity(nix_c_context * context, nix_verbosity level) -/// { -/// if (context) -/// context->last_err_code = NIX_OK; -/// if (level > NIX_LVL_VOMIT || level < NIX_LVL_ERROR) -/// return nix_set_err_msg(context, NIX_ERR_UNKNOWN, "Invalid verbosity level"); -/// try { -/// nix::verbosity = static_cast(level); -/// } catch (...) { -/// return nix_context_error(context); -/// } -/// return NIX_OK; -/// } -/// ``` -/// -pub fn set_verbosity(level: NixVerbosity) { - wrap::nix_fn!(|ctx: &ErrorContext| unsafe { - sys::nix_set_verbosity(ctx.as_ptr(), level); - }) - .unwrap() -}