UNPKG

glass-platform

Version:

Glass platform

76 lines (71 loc) 2.83 kB
require '../global' fs = require 'fs' np = require 'path' util = require './utility' watcher = require './watcher' browserBuild = require 'browser-build' check = (config) -> throw new Error "config.coffee.input is required" unless config.coffee.input? throw new Error "config.coffee.output is required" unless config.coffee.output? if config.browser? config.browser.input ?= {} config.browser.input[config.coffee.output] ?= config.name config.browser.output ?= "browser" return build = (config, callback) -> util.spawn "coffee.cmd -c -m -o #{config.coffee.output} #{config.coffee.input}", callback runTest = (config, callback) -> list = util.list config.coffee.output, {include:".js"} util.spawn "mocha.cmd --harmony -R spec #{list.join ' '}", callback # util.spawn "mocha.cmd --recursive -R spec -g unitTest* -u exports #{config.coffee.output}", callback watchCompile = (config) -> util.spawn "coffee.cmd -w -m -c -o #{config.coffee.output} #{config.coffee.input}" if config.browser? browserBuild.watch config.browser watchTest = (config) -> # use a directory watcher to invoke nodeunit tests debouncedRunTest = (-> runTest config ).debounce(500) options = filter: ".js" initial: false watcher.watchDirectory config.coffee.output, options, debouncedRunTest getPackageJson = (config) -> path = np.join(config.coffee.output, 'package.json') JSON.parse fs.readFileSync(path, 'utf8') module.exports = exports = # builds this project build: (config, callback) -> check config build config, -> if config.browser? browserBuild.build config.browser runTest config, callback # watches input and incrementally builds output watch: (config) -> check config watchCompile config watchTest config # maybe start a web server if config.browser?.port? util.startWebServer root: config.browser.output.directory port: config.browser.port # runs our unit tests test: (config, callback) -> check config runTest config, callback # runs npm publish on the output library publish: (config) -> util.spawn "npm.cmd publish #{config.coffee.output}" # bumps the package.json build version number bump: (config) -> pj = getPackageJson config version = pj.version.split '.' # bump the build version version[2] = parseInt(version[2]) + 1 version = version.join '.' util.spawn "npm.cmd version #{version}", {cwd:config.coffee.output}, -> # now publish it exports.publish config