feat(nix/runExecline): add runExecline

runExecline is a primitive that just does not care.

It’s similar to `runCommand`, but instead of concatenating bash
scripts left and right, it actually *uses* the features of
`derivation`, passing things to `args` and making it possible to
overwrite the `builder` in a sensible manner.

Additionally, it provides a way to pass a nix string to `stdin` of the
build script.

Similar to `writeExecline`, the passed script is not a string, but a
nested list of nix lists representing execline blocks. Escaping is
done by the implementation, the user can just use normal nix strings.

Change-Id: I890d9e5d921207751cdc8cc4309381395d92742f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/701
Reviewed-by: BuildkiteCI
Reviewed-by: isomer <isomer@tvl.fyi>
Reviewed-by: tazjin <mail@tazj.in>
Tested-by: BuildkiteCI
This commit is contained in:
Profpatsch 2020-06-28 03:14:11 +02:00
parent 7a6a007302
commit 4402c363b6
5 changed files with 254 additions and 1 deletions

View file

@ -0,0 +1,19 @@
{ depot, pkgs, lib, ... }:
let
runExecline = import ./runExecline.nix {
inherit (pkgs) stdenv;
inherit (depot.nix) escapeExecline getBins;
inherit pkgs lib;
};
tests = import ./tests.nix {
inherit runExecline;
inherit (depot.nix) getBins;
inherit (pkgs) stdenv coreutils;
inherit pkgs;
};
in {
__functor = _: runExecline;
inherit tests;
}