git.delta.rocks / jrsonnet / refs/commits / 33f3601e24db

difftreelog

source

crates/nix-eval/src/util.rs1.0 KiBsourcehistory
1use std::time::Instant;23use anyhow::bail;4use serde::Deserialize;5use tracing::{debug, warn};67use crate::{Value, nix_go_json};89#[derive(Deserialize, Debug)]10struct Assertion {11	assertion: bool,12	message: String,13}1415#[tracing::instrument(level = "info", skip(val))]16pub async fn assert_warn(action: &str, val: &Value) -> anyhow::Result<()> {17	let before_errors = Instant::now();18	let errors: Vec<String> = nix_go_json!(val.errors);19	// let assertions: Vec<Assertion> = nix_go_json!(val.assertions);20	debug!("errors evaluation took {:?} {errors:?} ", before_errors.elapsed());21	if !errors.is_empty() {22		bail!(23			"failed with error{}{}",24			if errors.len() != 1 { "s:\n- " } else { ": " },25			errors.join("\n- "),26		);27	}2829	let before_errors = Instant::now();30	let warnings: Vec<String> = nix_go_json!(val.warnings);31	debug!("warnings evaluation took {:?}", before_errors.elapsed());32	if !warnings.is_empty() {33		warn!(34			"completed with warning{}{}",35			if warnings.len() != 1 { "s:\n- " } else { ": " },36			warnings.join("\n- "),37		);38	}39	Ok(())40}