-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshell.nix
48 lines (41 loc) · 1.4 KB
/
shell.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{ pkgs ? import <nixpkgs> {} }:
let
# Useful for viewing the javascript created in 'public'
localBuild = pkgs.writeShellScriptBin "localBuild" ''
set -ex
for x in src/SciRate/Views/*.elm; do
name=$(basename $x .elm)
elm make src/SciRate/Views/''${name}.elm --output public/build/''${name}.js
done;
'';
# Builds compressed versions of the javascript and copies it
# to the 'SCIRATE_ROOT_DIR' environment variable.
releaseBuild = pkgs.writeShellScriptBin "releaseBuild" ''
set -ex
if [ -z "''${SCIRATE_ROOT_DIR}" ]
then
echo "'SCIRATE_ROOT_DIR' env variable is required."
exit 1
fi
for x in src/SciRate/Views/*.elm; do
name=$(basename $x .elm)
elm make src/SciRate/Views/''${name}.elm --output build/''${name}.js --optimize
uglifyjs build/''${name}.js \
--compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters=true,keep_fargs=false,unsafe_comps=true,unsafe=true,passes=2' \
--output build/''${name}.js
uglifyjs build/''${name}.js --mangle --output build/''${name}.js
cp build/''${name}.js \
''${SCIRATE_ROOT_DIR}/app/assets/javascripts/jobs-''${name}.js
done;
'';
in
pkgs.stdenv.mkDerivation {
name = "scirate-jobs";
buildInputs = [
pkgs.nodePackages.uglify-js
pkgs.elmPackages.elm
pkgs.hasura-cli
localBuild
releaseBuild
];
}