git.delta.rocks / jrsonnet / refs/commits / d602c0676eb0

difftreelog

feat more error contexts

tklpopmtYaroslav Bolyukin2025-10-18parent: #61365df.patch.diff
in: trunk

3 files changed

modifiedcrates/fleet-base/src/host.rsdiffbeforeafterboth
--- a/crates/fleet-base/src/host.rs
+++ b/crates/fleet-base/src/host.rs
@@ -520,7 +520,7 @@
 		let secrets = nix_go!(nixos.secrets);
 		let mut out = Vec::new();
 		for name in secrets.list_fields()? {
-			let secret = secrets.get_field(&name)?;
+			let secret = secrets.get_field(&name).context("getting secret")?;
 			let is_shared: bool = nix_go_json!(secret.shared);
 			if is_shared {
 				continue;
modifiedcrates/nix-eval/src/lib.rsdiffbeforeafterboth
729 FunctorKind::Functor => {729 FunctorKind::Functor => {
730 let f = self.get_field("__functor")?;730 let f = self
731 .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 = self
760 .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 }
modifiedcrates/nix-eval/src/macros.rsdiffbeforeafterboth
--- a/crates/nix-eval/src/macros.rs
+++ b/crates/nix-eval/src/macros.rs
@@ -66,20 +66,21 @@
 
 #[macro_export]
 macro_rules! nix_go {
-	(@o($o:expr) . $var:ident $($tt:tt)*) => {{
-		nix_go!(@o($o.get_field(stringify!($var))?) $($tt)*)
+	(@o($o:expr, $path:expr) . $var:ident $($tt:tt)*) => {{
+		nix_go!(@o($o.get_field(stringify!($var)).context(concat!("getting nested ", $path))?, $path) $($tt)*)
 	}};
-	(@o($o:expr) [ $v:expr ] $($tt:tt)*) => {{
-		nix_go!(@o($o.get_field($v)?) $($tt)*)
+	(@o($o:expr, $path:expr) [ $v:expr ] $($tt:tt)*) => {{
+		nix_go!(@o($o.get_field($v).context(concat!("getting nested ", $path))?, $path) $($tt)*)
 	}};
-	(@o($o:expr) ($($var:tt)*) $($tt:tt)*) => {
-		nix_go!(@o($o.call($crate::nix_expr_inner!($($var)+))?) $($tt)*)
+	(@o($o:expr, $path:expr) ($($var:tt)*) $($tt:tt)*) => {
+		nix_go!(@o($o.call($crate::nix_expr_inner!($($var)+)).context(concat!("getting nested ", $path))?, $path) $($tt)*)
 	};
-	(@o($o:expr)) => {$o};
+	(@o($o:expr, $path:expr)) => {$o};
 	($field:ident $($tt:tt)+) => {{
 		use $crate::nix_go;
+		use ::anyhow::Context;
 		let out = $field.clone();
-		nix_go!(@o(out) $($tt)*)
+		nix_go!(@o(out, ::std::stringify!($($tt)*)) $($tt)*)
 	}}
 }
 #[macro_export]