pkgs: add writeJS{,Bin}

This commit is contained in:
2018-09-23 13:05:11 +02:00
parent 3212b4fbfb
commit 79ab2c27f9
4 changed files with 27 additions and 0 deletions

1
ci.nix
View File

@@ -18,6 +18,7 @@ in
bash = writeTest "bash features" simples.bash; bash = writeTest "bash features" simples.bash;
dash = writeTest "dash features" simples.dash; dash = writeTest "dash features" simples.dash;
haskell = writeTest "Rolf" simples.haskell; haskell = writeTest "Rolf" simples.haskell;
js = writeTest "function add(n,d){return n+d}" simples.js;
perl = writeTest "Howdy!" simples.perl; perl = writeTest "Howdy!" simples.perl;
python2 = writeTest "['some', 'random', 'variables']" simples.python2; python2 = writeTest "['some', 'random', 'variables']" simples.python2;
python3 = writeTest "['some', 'random', 'variables']" simples.python3; python3 = writeTest "['some', 'random', 'variables']" simples.python3;

View File

@@ -18,6 +18,9 @@ in {
main = do main = do
putStrLn "hello world" putStrLn "hello world"
''; '';
js = pkgs.writeJS "hello-world" {} ''
console.log("hello world")
'';
perl = pkgs.writePerl "hello-world" {} '' perl = pkgs.writePerl "hello-world" {} ''
print "hello world\n"; print "hello world\n";
''; '';

View File

@@ -14,6 +14,12 @@ in {
main :: IO () main :: IO ()
main = print Rolf main = print Rolf
''; '';
js = pkgs.writeJS "example-js" { deps = [ pkgs.nodePackages.uglify-js ]; } ''
var UglifyJS = require("uglify-js");
var code = "function add(first, second) { return first + second; }";
var result = UglifyJS.minify(code);
console.log(result.code);
'';
perl = pkgs.writePerl "simple.pl" { deps = [ pkgs.perlPackages.boolean ]; } '' perl = pkgs.writePerl "simple.pl" { deps = [ pkgs.perlPackages.boolean ]; } ''
use boolean; use boolean;
print "Howdy!\n" if true; print "Howdy!\n" if true;

View File

@@ -297,6 +297,23 @@ pkgs: oldpkgs: {
}; };
}; };
writeJS = name: { deps ? [] }: text:
let
node-env = pkgs.buildEnv {
name = "node";
paths = deps;
pathsToLink = [
"/lib/node_modules"
];
};
in pkgs.writeDash name ''
export NODE_PATH=${node-env}/lib/node_modules
exec ${pkgs.nodejs}/bin/node ${pkgs.writeText "js" text}
'';
writeJSBin = name:
pkgs.writeJS "/bin/${name}";
writeJSON = name: value: pkgs.runCommand name { writeJSON = name: value: pkgs.runCommand name {
json = toJSON value; json = toJSON value;
passAsFile = [ "json" ]; passAsFile = [ "json" ];