-
Notifications
You must be signed in to change notification settings - Fork 9
/
build.jisp
100 lines (88 loc) · 2.94 KB
/
build.jisp
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
(= fs (require "fs")
args (get (require "yargs") "argv"))
; Accepted arguments:
; no arguments -- rebuild dev with dev
; -r -- rebuild dev with stable
; -s -- rebuild stable with dev
(= files `("index"
"functions"
"utils"
"operators"
"tokenise"
"lex"
"parse"
"register"
"repl"
"optparse"
"command"
"macros"
"uniq"
"jisp"
"browser"))
(= filesBrowser `("utils"
"functions"
"operators"
"tokenise"
"lex"
"parse"
"macros"
"uniq"
"jisp"
"browser"))
(def buildFile compiler filename srcDir destDir (do
(= srcPath (+ srcDir filename ".jisp")
destPath (+ destDir filename ".js")
src (fs.readFileSync srcPath "utf8"))
(prn (+ "-- compiling " filename "..."))
(= js (compiler.compile src))
(fs.writeFileSync destPath js "utf8")))
(def build jisp srcDir destDir (do
(prn "-- building...")
(for filename files (buildFile jisp filename srcDir destDir))
(prn "-- if you're reading this, compilation has succeeded!")))
(if args.r
(do
; Load compiler
(prn "-- trying to load stable compiler...")
(= jisp (require "./lib/jisp/jisp"))
; Build with stable
(prn "-- rebuilding dev with stable...")
(build jisp "./src/" "./dev/jisp/"))
(elif args.s (do
; Load compiler
(prn "-- trying to load unstable compiler...")
(= jisp_unstable (require "./dev/jisp/jisp"))
; Build with unstable
(prn "-- trying to build lib with unstable compiler...")
(build jisp_unstable "./src/" "./lib/jisp/")))
(do
; Load compiler
(prn "-- trying to load unstable compiler...")
(= jisp_unstable (require "./dev/jisp/jisp"))
; Build with unstable
(prn "-- trying to build dev with unstable compiler...")
(build jisp_unstable "./src/" "./dev/jisp/")
(prn "-- when testing the unstable version, recompile at least twice!")))
; Build the concatenated version for the browser
; Copied from the CoffeeScript cakefile
(= code "")
(for name filesBrowser
(+= code (+
"require['./" name "'] = (function() {
var exports = {}, module = {exports: exports};
" (fs.readFileSync (+ "./dev/jisp/" name ".js")) "
return module.exports;
})();")))
(= code (+
"(function(root) {
var jisp = function() {
function require(path) { return require[path]; }
" code "
return require['./jisp'];
}();
root.jisp = jisp;
}(this));"))
(fs.writeFileSync "./browser/jisp.js" code)
(prn "-- if you're reading this, concat build has succeeded!")
(try (do (fs.writeFileSync "./node_modules/jisp/browser/jisp.js" code)
(prn "-- replaced the browser module in ./node_modules/jisp/browser/jisp.js for gh-pages testing")))