From 34b7620764247bb967062a94c06a1750f8069701 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sun, 30 Jul 2023 09:05:28 +0200 Subject: refactor(tvix/nix-compat/derivation): simplify Let the escape function only take care of string escaping, not quoting. Let write_array_elements always quote and escape strings it consumes. Move the business of writing additional wrapping characters around it to the caller. Change-Id: Ib8dea69c409561b49862c531ba5a3fe6c2f061f8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8993 Reviewed-by: raitobezarius Autosubmit: flokli Tested-by: BuildkiteCI --- tvix/nix-compat/src/derivation/mod.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'tvix/nix-compat/src/derivation/mod.rs') diff --git a/tvix/nix-compat/src/derivation/mod.rs b/tvix/nix-compat/src/derivation/mod.rs index 498aa1b59d..b416e745a5 100644 --- a/tvix/nix-compat/src/derivation/mod.rs +++ b/tvix/nix-compat/src/derivation/mod.rs @@ -5,6 +5,7 @@ use bstr::BString; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; use std::collections::{BTreeMap, BTreeSet}; +use std::io; mod errors; mod escape; @@ -45,8 +46,8 @@ impl Derivation { /// write the Derivation to the given [std::io::Write], in ATerm format. /// /// The only errors returns are these when writing to the passed writer. - pub fn serialize(&self, writer: &mut impl std::io::Write) -> Result<(), std::io::Error> { - write::write_str(writer, write::DERIVATION_PREFIX)?; + pub fn serialize(&self, writer: &mut impl std::io::Write) -> Result<(), io::Error> { + io::copy(&mut io::Cursor::new(write::DERIVATION_PREFIX), writer)?; write::write_char(writer, write::PAREN_OPEN)?; write::write_outputs(writer, &self.outputs)?; -- cgit 1.4.1