Преглед изворни кода

nixpkgs/elvish: add eval-export helper

Thomas Dy пре 2 година
родитељ
комит
47ee27db7f
2 измењених фајлова са 35 додато и 0 уклоњено
  1. 1 0
      .config/nixpkgs/elvish/lib/config.elv
  2. 34 0
      .config/nixpkgs/elvish/lib/eval-export.elv

+ 1 - 0
.config/nixpkgs/elvish/lib/config.elv

@@ -2,6 +2,7 @@ use str
 use prompt
 use nix-shell
 use direlv
+use eval-export
 
 edit:add-var ls~ { |@a|
   e:ls --color=auto --group-directories-first -F --quoting-style literal $@a

+ 34 - 0
.config/nixpkgs/elvish/lib/eval-export.elv

@@ -0,0 +1,34 @@
+use str
+
+var ignore = [
+  _
+  PWD
+  SHLVL
+  PATH
+]
+
+fn apply-env {|env|
+  for var $env {
+    if (eq $var '') {
+      break
+    }
+
+    var key value = (str:split &max=2 "=" $var)
+    if (has-value $ignore $key) {
+      continue
+    }
+
+    put +$key
+    set-env $key $value
+  }
+}
+
+# helper to set environment from programs that output a bash script to `eval`
+edit:add-var eval-export~ {
+  var script = (slurp)
+  var output = (env -i sh -c $script"\n/usr/bin/env -0")
+
+  var @vars = (str:split "\x00" $output)
+  edit:notify "Applying vars"
+  edit:notify (print (apply-env $vars))
+}