about summary refs log tree commit diff
path: root/pkgs/profpatsch/execline/write-execline.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/profpatsch/execline/write-execline.nix')
-rw-r--r--pkgs/profpatsch/execline/write-execline.nix18
1 files changed, 18 insertions, 0 deletions
diff --git a/pkgs/profpatsch/execline/write-execline.nix b/pkgs/profpatsch/execline/write-execline.nix
new file mode 100644
index 00000000..721261a2
--- /dev/null
+++ b/pkgs/profpatsch/execline/write-execline.nix
@@ -0,0 +1,18 @@
+{ pkgs, execlineb-with-builtins }:
+let
+  escape = ./escape.nix { inherit (pkgs) lib; };
+
+  # Write a list of execline argv parameters to an execline script.
+  # Everything is escaped correctly.
+  # TODO upstream into nixpkgs
+  writeExeclineCommon = writer: name: { readNArgs ? 0 }: argList: writer name ''
+    #!${execlineb-with-builtins}/bin/execlineb -s${toString readNArgs}
+    export EXECLINE_STRICT 2
+    ${escape.escapeExecline argList}
+  '';
+  writeExecline = writeExeclineCommon pkgs.writeScript;
+  writeExeclineBin = writeExeclineCommon pkgs.writeScriptBin;
+
+in {
+  inherit writeExecline writeExeclineBin;
+}