about summary refs log tree commit diff
path: root/tvix/nix-compat/src/derivation/escape.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-07-31T13·46+0200
committerclbot <clbot@tvl.fyi>2023-10-16T12·23+0000
commit2410f2292f53a17242ed54b0af2d7b04ec3173f6 (patch)
tree476d93504a2c21d48011fce4f4afe79bfb0b0cca /tvix/nix-compat/src/derivation/escape.rs
parent8b09ae54b1d635e77c394dd965915479283489a2 (diff)
feat(nix-compat/{aterm,derivation}): init parser r/6831
This provides a nom-based parser for Nix derivations in ATerm format,
which can be reached via `Derivation::from_aterm_bytes`.

Some of the lower-level ATerm primitives are moved into a (new) aterm
module, and some more higher-level ones that construct derivation-
specific types.

Also, move the escape_bytes function into there, this is a generic ATerm
thing.

Change-Id: I2b03b8a1461c7ea2fcb8640c2fc3d1fa3ea719fb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9730
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nix-compat/src/derivation/escape.rs')
-rw-r--r--tvix/nix-compat/src/derivation/escape.rs27
1 files changed, 0 insertions, 27 deletions
diff --git a/tvix/nix-compat/src/derivation/escape.rs b/tvix/nix-compat/src/derivation/escape.rs
deleted file mode 100644
index 06b550bbf02d..000000000000
--- a/tvix/nix-compat/src/derivation/escape.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-use bstr::ByteSlice;
-
-/// Escapes a byte sequence. Does not add surrounding quotes.
-pub fn escape_bytes<P: AsRef<[u8]>>(s: P) -> Vec<u8> {
-    let mut s: Vec<u8> = s.as_ref().to_vec();
-
-    s = s.replace(b"\\", b"\\\\");
-    s = s.replace(b"\n", b"\\n");
-    s = s.replace(b"\r", b"\\r");
-    s = s.replace(b"\t", b"\\t");
-    s = s.replace(b"\"", b"\\\"");
-
-    s
-}
-
-#[cfg(test)]
-mod tests {
-    use super::escape_bytes;
-    use test_case::test_case;
-
-    #[test_case(b"", b""; "empty")]
-    #[test_case(b"\"", b"\\\""; "doublequote")]
-    #[test_case(b":", b":"; "colon")]
-    fn escape(input: &[u8], expected: &[u8]) {
-        assert_eq!(expected, escape_bytes(input))
-    }
-}