From cf3aab3b787acd05d1f15bf6e600c20f3196cb23 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Fri, 29 Jan 2021 15:54:18 +0100 Subject: [PATCH] feat(users/Profpatsch/netencode): add record-splice-env Splice a netencode record from stdin into the environment. Change-Id: I7eac19e18164e070e4463ee431d9b0e955857b9c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2454 Tested-by: BuildkiteCI Reviewed-by: Profpatsch --- users/Profpatsch/netencode/default.nix | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/users/Profpatsch/netencode/default.nix b/users/Profpatsch/netencode/default.nix index f5f038579..99cffc75b 100644 --- a/users/Profpatsch/netencode/default.nix +++ b/users/Profpatsch/netencode/default.nix @@ -89,11 +89,36 @@ let } (builtins.readFile ./netencode-mustache.rs); + record-splice-env = imports.writers.rustSimple { + name = "record-splice-env"; + dependencies = [ + netencode-rs + depot.users.Profpatsch.execline.exec-helpers + ]; + } '' + extern crate netencode; + extern crate exec_helpers; + use netencode::dec::{Record, ScalarAsBytes, Decoder, DecodeError}; + fn main() { + let t = netencode::t_from_stdin_or_panic("record-splice-env"); + match Record::::dec(t) { + Ok(map) => { + exec_helpers::exec_into_args( + "record-splice-env", + map.iter().map(|(k,v)| (k.as_bytes(), &v[..]) + ); + }, + Err(DecodeError(err)) => panic!("{}", err), + } + } + ''; + in { inherit netencode-rs netencode-rs-tests netencode-mustache + record-splice-env gen ; }