123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- {exec, spawn} = require 'child_process'
- fs = require 'fs'
- path = require 'path'
- esc = (arg) -> (''+arg).replace(/(?=[^a-zA-Z0-9_.\/\-\x7F-\xFF\n])/gm, '\\').replace(/\n/g, "'\n'").replace(/^$/, "''")
- srcDir = path.normalize __dirname+'/src'
- libDir = path.normalize __dirname+'/lib'
- libDebugDir = path.normalize __dirname+'/lib/debug'
- distDir = path.normalize __dirname+'/dist'
- cliDir = path.normalize __dirname+'/cli'
- binDir = path.normalize __dirname+'/bin'
- specDir = path.normalize __dirname+'/test/spec'
- modulesDir = path.normalize __dirname+'/node_modules'
- task 'build', 'build project', ->
- # Compile
- do compile = ->
- unless fs.existsSync libDir
- fs.mkdirSync libDir
- unless fs.existsSync libDir+'/Exception'
- fs.mkdirSync libDir+'/Exception'
- toCompile = 'Yaml Utils Unescaper Pattern Parser Inline Escaper Dumper Exception/ParseException Exception/ParseMore Exception/DumpException'.split ' '
- do compileOne = ->
- name = toCompile.shift()
- outputDir = (if '/' in name then libDir+'/Exception' else libDir)
- exec 'coffee -b -o '+esc(outputDir)+' -c '+esc(srcDir+'/'+name+'.coffee'), (err, res) ->
- if err then throw err
- console.log "Compiled #{name}.js"
- if toCompile.length
- compileOne()
- else
- debugCompile()
- # Debug compile
- debugCompile = ->
- unless fs.existsSync libDebugDir
- fs.mkdirSync libDebugDir
- unless fs.existsSync libDebugDir+'/Exception'
- fs.mkdirSync libDebugDir+'/Exception'
- toCompile = 'Yaml Utils Unescaper Pattern Parser Inline Escaper Dumper Exception/ParseException Exception/ParseMore Exception/DumpException'.split ' '
- do compileOne = ->
- name = toCompile.shift()
- outputDir = (if '/' in name then libDebugDir+'/Exception' else libDebugDir)
- exec 'coffee -m -b -o '+esc(outputDir)+' -c '+esc(srcDir+'/'+name+'.coffee'), (err, res) ->
- if err then throw err
- console.log "Compiled #{name}.js (debug)"
- if toCompile.length
- compileOne()
- else
- browserify()
- # Browserify
- unless fs.existsSync distDir
- fs.mkdirSync distDir
- browserify = ->
- exec 'browserify -t coffeeify --extension=".coffee" '+esc(srcDir+'/Yaml.coffee')+' > '+esc(distDir+'/yaml.js'), (err, res) ->
- if err then throw err
- console.log "Browserified yaml.js"
- exec 'browserify --debug -t coffeeify --extension=".coffee" '+esc(srcDir+'/Yaml.coffee')+' > '+esc(distDir+'/yaml.debug.js'), (err, res) ->
- if err then throw err
- console.log "Browserified yaml.js (debug)"
- minify()
- # Minify
- minify = ->
- exec 'uglifyjs --mangle sort '+esc(distDir+'/yaml.js')+' > '+esc(distDir+'/yaml.min.js'), (err, res) ->
- if err then throw err
- console.log "Minified yaml.min.js"
- compileSpec()
- # Compile spec
- compileSpec = ->
- exec 'coffee -b -c '+esc(specDir+'/YamlSpec.coffee'), (err, res) ->
- if err then throw err
- console.log "Compiled YamlSpec.js"
- compileCLI()
- # Compile CLI
- compileCLI = ->
- unless fs.existsSync binDir
- fs.mkdirSync binDir
- # yaml2json
- str = fs.readFileSync cliDir+'/yaml2json.js'
- str = "#!/usr/bin/env node\n" + str
- fs.writeFileSync binDir+'/yaml2json', str
- fs.chmodSync binDir+'/yaml2json', '755'
- console.log "Bundled yaml2json"
- # json2yaml
- str = fs.readFileSync cliDir+'/json2yaml.js'
- str = "#!/usr/bin/env node\n" + str
- fs.writeFileSync binDir+'/json2yaml', str
- fs.chmodSync binDir+'/json2yaml', '755'
- console.log "Bundled json2yaml"
- task 'test', 'test project', ->
- # Test
- spawn 'node', [modulesDir+'/jasmine-node/lib/jasmine-node/cli.js', '--verbose', '--coffee', specDir+'/YamlSpec.coffee'], stdio: "inherit"
- task 'doc', 'generate documentation', ->
- # Generate
- spawn 'codo', [srcDir], stdio: "inherit"
|