difftreelog
feat more error contexts
in: trunk
3 files changed
crates/fleet-base/src/host.rsdiffbeforeafterboth520 let secrets = nix_go!(nixos.secrets);520 let secrets = nix_go!(nixos.secrets);521 let mut out = Vec::new();521 let mut out = Vec::new();522 for name in secrets.list_fields()? {522 for name in secrets.list_fields()? {523 let secret = secrets.get_field(&name)?;523 let secret = secrets.get_field(&name).context("getting secret")?;524 let is_shared: bool = nix_go_json!(secret.shared);524 let is_shared: bool = nix_go_json!(secret.shared);525 if is_shared {525 if is_shared {526 continue;526 continue;crates/nix-eval/src/lib.rsdiffbeforeafterboth729 FunctorKind::Functor => {729 FunctorKind::Functor => {730 let f = self.get_field("__functor")?;730 let f = self731 .get_field("__functor")732 .context("getting functor value")?;731 assert_eq!(733 assert_eq!(732 f.type_of(),734 f.type_of(),733 NixType::Function,735 NixType::Function,756 }758 }757 let output_name = self.get_field("outputName")?.to_string()?;759 let output_name = self760 .get_field("outputName")761 .context("getting output name field")?762 .to_string()?;758 let v = if output_name != output {763 let v = if output_name != output {759 let out = self.get_field(output)?;764 let out = self.get_field(output).context("getting target output")?;760 if !out.is_derivation() {765 if !out.is_derivation() {761 bail!("unknown output: {output}");766 bail!("unknown output: {output}");762 }767 }crates/nix-eval/src/macros.rsdiffbeforeafterboth666667#[macro_export]67#[macro_export]68macro_rules! nix_go {68macro_rules! nix_go {69 (@o($o:expr) . $var:ident $($tt:tt)*) => {{69 (@o($o:expr, $path:expr) . $var:ident $($tt:tt)*) => {{70 nix_go!(@o($o.get_field(stringify!($var))?) $($tt)*)70 nix_go!(@o($o.get_field(stringify!($var)).context(concat!("getting nested ", $path))?, $path) $($tt)*)71 }};71 }};72 (@o($o:expr) [ $v:expr ] $($tt:tt)*) => {{72 (@o($o:expr, $path:expr) [ $v:expr ] $($tt:tt)*) => {{73 nix_go!(@o($o.get_field($v)?) $($tt)*)73 nix_go!(@o($o.get_field($v).context(concat!("getting nested ", $path))?, $path) $($tt)*)74 }};74 }};75 (@o($o:expr) ($($var:tt)*) $($tt:tt)*) => {75 (@o($o:expr, $path:expr) ($($var:tt)*) $($tt:tt)*) => {76 nix_go!(@o($o.call($crate::nix_expr_inner!($($var)+))?) $($tt)*)76 nix_go!(@o($o.call($crate::nix_expr_inner!($($var)+)).context(concat!("getting nested ", $path))?, $path) $($tt)*)77 };77 };78 (@o($o:expr)) => {$o};78 (@o($o:expr, $path:expr)) => {$o};79 ($field:ident $($tt:tt)+) => {{79 ($field:ident $($tt:tt)+) => {{80 use $crate::nix_go;80 use $crate::nix_go;81 use ::anyhow::Context;81 let out = $field.clone();82 let out = $field.clone();82 nix_go!(@o(out) $($tt)*)83 nix_go!(@o(out, ::std::stringify!($($tt)*)) $($tt)*)83 }}84 }}84}85}85#[macro_export]86#[macro_export]