/
Cakefile
90 lines (65 loc) · 2.22 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
# Build function and task copied verbatim from:
# http://arcturo.github.com/library/coffeescript/05_compiling.html
fs = require 'fs'
{print} = require 'sys'
{spawn} = require 'child_process'
build = (callback) ->
coffee = spawn 'coffee', ['-c', '-o', 'lib', 'src']
coffee.stderr.on 'data', (data) ->
process.stderr.write data.toString()
coffee.stdout.on 'data', (data) ->
print data.toString()
coffee.on 'exit', (code) ->
callback?() if code is 0
task 'build', 'Build lib/ from src/', ->
build()
# Copyright (c) 2011 Border Stylo
task 'bundle', 'Generate the browser bundle for ax.js', (options)->
fs = require 'fs'
path = require 'path'
browserify = require 'browserify'
_module = path.join __dirname, 'lib', 'ax.js'
bundle = path.join __dirname, 'browser', 'ax.js'
example = path.join __dirname, 'examples', 'javascripts', 'lib', 'ax.js'
src = browserify({ filter : require('uglify-js') })
.require(_module)
.bundle()
;
buffer = new Buffer [
'var Ax = (function () {'
src
'; return require("./ax")'
'})()'
].join '';
fs.writeFile bundle, buffer, (err) ->
throw err if err;
console.log bundle + ' written (' + buffer.length + ' bytes)'
fs.writeFile example, buffer, (err) ->
throw err if err;
console.log example + ' written (' + buffer.length + ' bytes)'
task 'watch', 'Watch lib/ax.js for auto-bundling', (options)->
invoke 'bundle'
fs = require 'fs'
path = require 'path'
_module = path.join __dirname, 'lib', 'ax.js'
fs.watchFile _module, (current, previous) ->
if current.mtime > previous.mtime
invoke 'bundle'
option '-p', '--port [PORT]', 'port to run the server on'
task 'test:server', 'launch a server for the browser tests', (o)->
browserify = require 'browserify'
path = require 'path'
express = require 'express'
app = express.createServer()
public_path = path.join __dirname, 'test', 'browser'
ax = path.join __dirname, 'lib', 'ax'
app.configure ->
app.use express.logger 'dev'
app.use express.static public_path
app.get '/ax.js', (req, res)->
res.header 'Content-Type', 'text/javascript'
src = browserify({
require: ['./lib/ax']
}).bundle()
res.end(src);
app.listen o.port || 8080