UNPKG

2.42 kBPlain TextView Raw
1browserify = require 'browserify'
2fs = require 'fs'
3sp = require('uglify-js').parser
4pro = require('uglify-js').uglify
5{series} = require 'async'
6{exec} = require 'child_process'
7
8process.env['PATH'] = "node_modules/.bin:#{ process.env['PATH'] }"
9
10bold = '\x1b[0;1m'
11red = '\x1b[0;31m'
12green = '\x1b[0;32m'
13reset = '\x1b[0m'
14
15log = (message, color = green) -> console.log "#{ color }#{ message }#{ reset }"
16
17onerror = (err) ->
18 if err
19 process.stdout.write "#{ red }#{ err.stack }#{ reset }\n"
20 process.exit -1
21
22test = (cb) ->
23 exec 'jasmine-node --coffee spec', (err, stdout, stderr) ->
24 msg = /(\d+) tests?, (\d+) assertions?, (\d+) failures?/
25 matches = stdout.match msg || stderr.match msg
26 cb new Error('Tests failed') if matches[3] != '0'
27 log matches[0]
28 cb err
29
30task 'test', 'Run all tests', -> test onerror
31
32publish = (cb) ->
33
34 browserPackage = (cb) ->
35 fs.readFile 'package.json', 'utf8', (err, p) ->
36 onerror err
37 p = JSON.parse p
38 throw new Exception 'Invalid package.json' if !p.version
39
40 log "Update compiler dist for #{ p.version }"
41 b = browserify()
42 b.ignore 'coffee-script'
43 b.require "#{ __dirname }/src/haml-coffee.coffee"
44 b.require "#{ __dirname }/src/hamlc.coffee"
45
46 code = b.bundle()
47 fs.writeFileSync 'dist/compiler/hamlcoffee.js', code
48
49 ast = sp.parse code
50 ast = pro.ast_mangle ast
51 ast = pro.ast_squeeze ast
52
53 min = pro.gen_code ast
54 fs.writeFileSync 'dist/compiler/hamlcoffee.min.js', min
55
56 exec "git commit -am 'Update compiler dist for #{ p.version }'", (err, stdout, stderr) ->
57 log stdout
58 cb err
59
60 npmPublish = (cb) ->
61 log 'Publishing to NPM'
62 exec 'npm publish', (err, stdout, stderr) ->
63 log stdout
64 cb err
65
66 tagVersion = (cb) ->
67 fs.readFile 'package.json', 'utf8', (err, p) ->
68 onerror err
69 p = JSON.parse p
70 throw new Exception 'Invalid package.json' if !p.version
71 log "Tagging v#{ p.version }"
72 exec "git tag v#{ p.version }", (err, stdout, stderr) ->
73 log stdout
74 cb err
75
76 pushGithub = (cb) ->
77 exec 'git push --tag origin master', (err, stdout, stderr) ->
78 log stdout
79 cb err
80
81 series [
82 test
83 browserPackage
84 tagVersion
85 pushGithub
86 npmPublish
87 ], cb
88
89task 'publish', 'Prepare build and push new version to NPM', -> publish onerror