tvl-depot/nix/netstring/attrsToKeyValList.nix
Vincent Ambo aa122cbae7 style: format entire depot with nixpkgs-fmt
This CL can be used to compare the style of nixpkgs-fmt against other
formatters (nixpkgs, alejandra).

Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
Reviewed-by: lukegb <lukegb@tvl.fyi>
Reviewed-by: wpcarro <wpcarro@gmail.com>
Reviewed-by: Profpatsch <mail@profpatsch.de>
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: cynthia <cynthia@tvl.fyi>
Reviewed-by: edef <edef@edef.eu>
Reviewed-by: eta <tvl@eta.st>
Reviewed-by: grfn <grfn@gws.fyi>
2022-01-31 16:11:53 +00:00

33 lines
952 B
Nix

{ depot, lib, ... }:
# Convert an attrset of strings to a list of key/value netstring pairs.
# A good minimally viable json replacement if all you need is to iterate.
# You can use e.g. `forstdin -Ed '' item` in execline to split the items
# and then get the key and value via `multidefine -d '' $item { key value }`
#
# Example:
# { foo = "bar"; x = "abc"; }
# => "12:3:foo,3:bar,,10:1:x,3:abc,,"
#
# Example with runExecline:
# nix.runExecline "test" {
# stdin = nix.netstring.attrsToKeyValList {
# foo = "bar";
# x = "abc";
# };
# } [
# "forstdin" "-Ed" "" "item"
# "multidefine" "-d" "" "$item" [ "key" "value" ]
# "${pkgs.coreutils}/bin/echo" "\${key} -> \${value}"
# ]
# will print:
# foo -> bar
# x -> abc
attrs:
lib.concatStrings
(lib.mapAttrsToList
(k: v: depot.nix.netstring.fromString
(depot.nix.netstring.fromString k
+ depot.nix.netstring.fromString v))
attrs)