move verbosity.rs -> logging.rs

This commit is contained in:
do butterflies cry? 2026-04-10 10:11:24 +10:00
parent 4beda8850f
commit 0087d2848a
Signed by: cry
GPG key ID: F68745A836CA0412
3 changed files with 77 additions and 38 deletions

View file

@ -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")]

76
nixide/src/logging.rs Normal file
View file

@ -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<nix::Verbosity>(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()
}

View file

@ -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<nix::Verbosity>(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()
}