forked from elm/elm-lang.org
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
executable file
·84 lines (65 loc) · 1.74 KB
/
build.sh
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/bash
set -e
function makeHtml {
cat <<EOF > $1
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>$2</title>
<link rel="shortcut icon" sizes="16x16 32x32 48x48 64x64 128x128 256x256" href="/favicon.ico">
<link rel="stylesheet" href="/assets/style.css">
<link rel="stylesheet" href="/assets/highlight/styles/default.css">
<script src="/assets/highlight/highlight.pack.js"></script>
</head>
<body>
<script type="text/javascript">
$(cat $3)
var app = Elm.Main.init();
</script>
<noscript>Please enable JavaScript to view this page.</script>
</body>
</html>
EOF
}
## DOWNLOAD BINARIES
mkdir -p bin
if [ ! -f bin/elm ]
then
npm install elm
ln -s ../node_modules/elm/bin/elm bin/elm
fi
if [ ! -f bin/uglifyjs ]
then
npm install uglify-js
ln -s ../node_modules/uglify-js/bin/uglifyjs bin/uglifyjs
fi
PATH=$(pwd)/bin:$PATH
## GENERATE HTML
mkdir -p _site
cp -r static/* _site/
mkdir -p _temp
for elm in $(find src/pages -type f -name "*.elm")
do
subpath="${elm#src/pages/}"
name="${subpath%.elm}"
js="_temp/$name.js"
html="_site/$name.html"
mkdir -p $(dirname $js)
mkdir -p $(dirname $html)
if [ -f $html ] && [ $(date -r $elm +%s) -eq $(date -r $html +%s) ]
then
echo "Cached: $elm"
else
echo "Compiling: $elm"
rm -f elm-stuff/*/Main.elm*
elm make $elm --optimize --output=$js > /dev/null
uglifyjs $js --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' \
| uglifyjs --mangle \
| makeHtml $html $name
# makeHtml $html $name $js
touch -r $elm $html
fi
done
rm -rf _temp