31 lines
1.1 KiB
Nix
31 lines
1.1 KiB
Nix
# Takes care of serializing and deserializing to some formats
|
|
# Blame: Pegasust<pegasucksgg@gmail.com>
|
|
# TODO: Add to* formats from pkgs.formats.*
|
|
{ pkgs
|
|
, lib
|
|
} @ inputs:
|
|
let
|
|
yamlToJsonDrv = yamlContent: outputPath: pkgs.callPackage
|
|
({ runCommand }:
|
|
# runCommand source: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/trivial-builders.nix#L33
|
|
runCommand outputPath { inherit yamlContent; nativeBuildInputs = [ pkgs.yq ]; }
|
|
# run yq which outputs '.' (no filter) on file at yamlPath
|
|
# note that $out is passed onto the bash/sh script for execution
|
|
''
|
|
echo "$yamlContent" | yq >$out
|
|
'')
|
|
{ };
|
|
in
|
|
{
|
|
# Takes in a yaml string and produces a derivation with translated JSON at $outputPath
|
|
# similar to builtins.fromJSON, turns a YAML string to nix attrset
|
|
fromYaml = yamlContent: builtins.fromJSON (builtins.readFile (yamlToJsonDrv yamlContent "any_output.json"));
|
|
fromYamlPath = yamlPath: builtins.fromJSON (
|
|
builtins.readFile (
|
|
yamlToJsonDrv
|
|
(
|
|
builtins.readFile yamlPath)
|
|
"any-output.json"));
|
|
# TODO: fromToml?
|
|
}
|