-
Notifications
You must be signed in to change notification settings - Fork 20
/
jbuild.coffee
107 lines (83 loc) · 3.35 KB
/
jbuild.coffee
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
101
102
103
104
105
106
107
# Licensed under the Apache License. See footer for details.
#-------------------------------------------------------------------------------
# use this file with jbuild: https://www.npmjs.org/package/jbuild
# install jbuild with:
# linux/mac: sudo npm -g install jbuild
# windows: npm -g install jbuild
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
tasks = defineTasks exports,
watch: "watch for source file changes, then run build, test and server"
serve: "run the test server stand-alone"
build: "build the server"
test: "run tests"
WatchSpec = "lib-src lib-src/* tests tests/*"
#-------------------------------------------------------------------------------
mkdir "-p", "tmp"
#-------------------------------------------------------------------------------
tasks.build = ->
log "running build"
unless test "-d", "node_modules"
exec "npm install"
log ""
log "---------------------------------------"
log "exiting jbuild because of `npm install`"
log "---------------------------------------"
process.exit 1
cleanDir "lib"
log "- compiling server coffee files"
coffee "--output lib lib-src"
#-------------------------------------------------------------------------------
tasks.watch = ->
watchIter()
watch
files: WatchSpec.split " "
run: watchIter
watchFiles "jbuild.coffee" :->
log "jbuild file changed; exiting"
process.exit 0
#-------------------------------------------------------------------------------
tasks.serve = ->
log "running server"
command = "server --verbose --serve"
#command = "lib/db"
server.start "tmp/server.pid", "node", command.split " "
#-------------------------------------------------------------------------------
tasks.test = ->
log "running tests"
tests = "tests/test-*.coffee"
options =
ui: "bdd"
reporter: "spec"
slow: 300
# compilers: "coffee:coffeescript"
require: "coffeescript/register"
options = for key, val of options
"--#{key} #{val}"
options = options.join " "
mocha "#{options} #{tests}", silent:true, (code, output) ->
console.log "test results:\n#{output}"
#-------------------------------------------------------------------------------
watchIter = ->
tasks.build()
tasks.serve()
tasks.test()
#-------------------------------------------------------------------------------
cleanDir = (dir) ->
mkdir "-p", dir
rm "-rf", "#{dir}/*"
#-------------------------------------------------------------------------------
# Copyright IBM Corp. 2014
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#-------------------------------------------------------------------------------