feat(users/Profpatsch/netencode): add env-splice-record
It’s the inverse of record-splice-env! It sucks up the environment and prints it as a netencode dict! Only the utf-8 clean parts at least. Change-Id: I96c19fc5ea3a67a23e238f15f4d0fa783081859c Reviewed-on: https://cl.tvl.fyi/c/depot/+/2527 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
5156da542b
commit
9d7c3ee877
2 changed files with 37 additions and 8 deletions
|
|
@ -86,12 +86,39 @@ let
|
|||
}
|
||||
'';
|
||||
|
||||
env-splice-record = imports.writers.rustSimple {
|
||||
name = "env-splice-record";
|
||||
dependencies = [
|
||||
netencode-rs
|
||||
depot.users.Profpatsch.execline.exec-helpers
|
||||
];
|
||||
} ''
|
||||
extern crate netencode;
|
||||
extern crate exec_helpers;
|
||||
use netencode::{T};
|
||||
use std::os::unix::ffi::OsStringExt;
|
||||
|
||||
fn main() {
|
||||
exec_helpers::no_args("env-splice-record");
|
||||
let mut res = std::collections::HashMap::new();
|
||||
for (key, val) in std::env::vars_os() {
|
||||
match (String::from_utf8(key.into_vec()), String::from_utf8(val.into_vec())) {
|
||||
(Ok(k), Ok(v)) => { let _ = res.insert(k, T::Text(v)); },
|
||||
// same as in record-splice-env, we ignore non-utf8 variables
|
||||
(_, _) => {},
|
||||
}
|
||||
}
|
||||
netencode::encode(&mut std::io::stdout(), &T::Record(res).to_u()).unwrap()
|
||||
}
|
||||
'';
|
||||
|
||||
in depot.nix.utils.drvTargets {
|
||||
inherit
|
||||
netencode-rs
|
||||
netencode-mustache
|
||||
record-get
|
||||
record-splice-env
|
||||
gen
|
||||
;
|
||||
netencode-rs
|
||||
netencode-mustache
|
||||
record-get
|
||||
record-splice-env
|
||||
env-splice-record
|
||||
gen
|
||||
;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue