simplify write_json with from_iter

This commit is contained in:
figsoda 2023-01-12 15:07:58 -05:00
parent 708ca82d5f
commit 26b0ed98cc

View File

@ -1,7 +1,7 @@
use anyhow::{bail, Result};
use itertools::Itertools;
use rustc_hash::FxHashMap;
use serde_json::json;
use serde_json::{json, Value};
use url::Url;
use std::{fmt::Write as _, io::Write};
@ -159,10 +159,12 @@ pub trait SimpleFetcher<'a, const N: usize> {
overwrites: Vec<(String, String)>,
overwrites_str: Vec<(String, String)>,
) -> Result<()> {
let mut fetcher_args = json!({
"rev": rev,
Self::HASH_KEY: hash,
});
let mut fetcher_args = Value::from_iter(
Self::KEYS
.into_iter()
.zip(*values)
.chain([("rev", rev.as_ref()), (Self::HASH_KEY, hash.as_ref())]),
);
if let Some(host) = self.host() {
fetcher_args[Self::HOST_KEY] = json!(host);
@ -172,10 +174,6 @@ pub trait SimpleFetcher<'a, const N: usize> {
fetcher_args["group"] = json!(group);
}
for (key, value) in Self::KEYS.iter().zip(values) {
fetcher_args[key] = json!(value);
}
for (key, value) in args {
fetcher_args[key] = json!({
"type": "nix",