forked from twilson63/express-coffee
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cakefile
136 lines (118 loc) · 3.6 KB
/
Cakefile
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
fs = require 'fs'
wrench = require 'wrench'
{print} = require 'util'
which = require 'which'
{spawn, exec} = require 'child_process'
# ANSI Terminal Colors
bold = '\x1B[0;1m'
red = '\x1B[0;31m'
green = '\x1B[0;32m'
reset = '\x1B[0m'
pkg = JSON.parse fs.readFileSync('./package.json')
testCmd = pkg.scripts.test
startCmd = pkg.scripts.start
log = (message, color, explanation) ->
console.log color + message + reset + ' ' + (explanation or '')
# Compiles app.coffee and src directory to the .app directory
build = (callback) ->
options = ['-c','-b', '-o', '.app', 'src']
cmd = which.sync 'coffee'
coffee = spawn cmd, options
coffee.stdout.pipe process.stdout
coffee.stderr.pipe process.stderr
coffee.on 'exit', (status) -> callback?() if status is 0
# mocha test
test = (callback) ->
options = [
'--globals'
'hasCert,res'
'--reporter'
'spec'
'--compilers'
'coffee:coffee-script/register'
'--colors'
'--require'
'should'
'--require'
'./server'
]
try
cmd = which.sync 'mocha'
spec = spawn cmd, options
spec.stdout.pipe process.stdout
spec.stderr.pipe process.stderr
spec.on 'exit', (status) -> callback?() if status is 0
catch err
log err.message, red
log 'Mocha is not installed - try npm install mocha -g', red
task 'docs', 'Generate annotated source code with Docco', ->
files = wrench.readdirSyncRecursive("src")
files = ("src/#{file}" for file in files when /\.coffee$/.test file)
log files
try
cmd ='./node_modules/.bin/docco-husky'
docco = spawn cmd, files
docco.stdout.pipe process.stdout
docco.stderr.pipe process.stderr
docco.on 'exit', (status) -> callback?() if status is 0
catch err
log err.message, red
log 'Docco is not installed - try npm install docco -g', red
task 'build', ->
build -> log ":)", green
task 'spec', 'Run Mocha tests', ->
build -> test -> log ":)", green
task 'test', 'Run Mocha tests', ->
build -> test -> log ":)", green
task 'dev', 'start dev env', ->
# watch_coffee
options = ['-c', '-b', '-w', '-o', '.app', 'src']
cmd = which.sync 'coffee'
coffee = spawn cmd, options
coffee.stdout.pipe process.stdout
coffee.stderr.pipe process.stderr
log 'Watching coffee files', green
# watch_js
supervisor = spawn 'node', [
'./node_modules/supervisor/lib/cli-wrapper.js',
'-w',
'.app,views',
'-e',
'js|jade',
'server'
]
supervisor.stdout.pipe process.stdout
supervisor.stderr.pipe process.stderr
log 'Watching js files and running server', green
task 'debug', 'start debug env', ->
# watch_coffee
options = ['-c', '-b', '-w', '-o', '.app', 'src']
cmd = which.sync 'coffee'
coffee = spawn cmd, options
coffee.stdout.pipe process.stdout
coffee.stderr.pipe process.stderr
log 'Watching coffee files', green
# run debug mode
app = spawn 'node', [
'--debug',
'server'
]
app.stdout.pipe process.stdout
app.stderr.pipe process.stderr
# run node-inspector
inspector = spawn 'node-inspector'
inspector.stdout.pipe process.stdout
inspector.stderr.pipe process.stderr
# run google chrome
chrome = spawn 'google-chrome', ['http://0.0.0.0:8080/debug?port=5858']
chrome.stdout.pipe process.stdout
chrome.stderr.pipe process.stderr
log 'Debugging server', green
option '-n', '--name [NAME]', 'name of model to `scaffold`'
task 'scaffold', 'scaffold model/controller/test', (options) ->
if not options.name?
log "Please specify model name", red
process.exit(1)
log "Scaffolding `#{options.name}`", green
scaffold = require './scaffold'
scaffold options.name