From 1622728507212a6f970f5b97e4d90ce6baa1dda4 Mon Sep 17 00:00:00 2001 From: Dav Glass Date: Mon, 29 Oct 2012 09:02:52 -0500 Subject: [PATCH] Fixes #34 - Added --clean and defaulted it to false --- lib/args.js | 2 ++ lib/help.js | 1 + lib/module.js | 17 +++++++++++++---- tests/args.js | 1 + 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lib/args.js b/lib/args.js index a28e527..8a11a61 100644 --- a/lib/args.js +++ b/lib/args.js @@ -21,6 +21,7 @@ var nopt = require('nopt'), cache: Boolean, jsstamp: Boolean, list: Boolean, + clean: Boolean, config: require('path'), lint: [ 'config', false ], csslint: Boolean, @@ -79,6 +80,7 @@ var setDefaults = function(parsed) { parsed.istanbul = (parsed.istanbul === undefined || parsed.istanbul === false) ? false : true; parsed.quiet = (parsed.quiet === undefined || parsed.quiet === false) ? false : true; parsed.silent = (parsed.silent === undefined || parsed.silent === false) ? false : true; + parsed.clean = (parsed.clean === undefined || parsed.clean === false) ? false : true; parsed['lint-stderr'] = (parsed['lint-stderr'] === undefined || parsed['lint-stderr'] === false) ? false : true; parsed.progress = (parsed.progress === undefined || parsed.progress === false) ? false : true; return parsed; diff --git a/lib/help.js b/lib/help.js index c7915ae..3ea3f03 100644 --- a/lib/help.js +++ b/lib/help.js @@ -69,6 +69,7 @@ if (args.help) { console.log('Experimental Options:'); console.log(' --semi Toggle on the strict semicolon checking in Uglify'); console.log(' --cache/--no-cache Cache the results of the build and bail if building for no reason, defaults to --no-cache'); + console.log(' --clean Remove the build directory before building (to clean old files)'); console.log(' --compressor Use YUI Compressor instead of uglify'); console.log(' --fail Fail the build if lint fails'); console.log(' --no-lint Skip JSlint, you better know what you are doing!'); diff --git a/lib/module.js b/lib/module.js index 7865830..c1ac7da 100644 --- a/lib/module.js +++ b/lib/module.js @@ -611,7 +611,7 @@ var setReplacers = function (options) { }; var build = function (mod, name, options, callback) { - var stack = new Stack(); + var stack = new Stack(), _build; if (options.lint === false) { defaultLint = options.lint; @@ -637,8 +637,7 @@ var build = function (mod, name, options, callback) { lintSTDError = options['lint-stderr']; mod.stamp = options.jsstamp; - log.info('deleting build dir: ' + path.join(buildDir, name || mod.name)); - rimraf(path.join(buildDir, name || mod.name), stack.add(function() { + _build = stack.add(function() { if (mod.jsfiles) { exports.js(mod, name, stack.add(function (err) { if (err) { @@ -667,7 +666,17 @@ var build = function (mod, name, options, callback) { if (mod.copy) { exports.copy(mod, name, stack.add(noop)); } - })); + }); + + if (options.clean) { + log.info('deleting build dir: ' + path.join(buildDir, name || mod.name)); + rimraf(path.join(buildDir, name || mod.name), _build); + } else { + _build(); + } + + + stack.done(function () { if (!stack.complete) { diff --git a/tests/args.js b/tests/args.js index aadcded..a27a0e5 100644 --- a/tests/args.js +++ b/tests/args.js @@ -24,6 +24,7 @@ var argsTests = { '--progress': 'progress', '--csslint': 'csslint', '--coverage': 'coverage', + '--clean': 'clean', '--lint-stderr': 'lint-stderr', '-w': 'walk' };