require('./global'); config.fatal = true; global.target = {}; // This ensures we only execute the script targets after the entire script has // been evaluated var args = process.argv.slice(2); setTimeout(function() { var t; if (args.length === 1 && args[0] === '--help') { console.log('Available targets:'); for (t in target) console.log(' ' + t); return; } // Wrap targets to prevent duplicate execution for (t in target) { (function(t, oldTarget){ // Wrap it target[t] = function(force) { if (oldTarget.done && !force) return; oldTarget.done = true; return oldTarget.apply(oldTarget, arguments); }; })(t, target[t]); } // Execute desired targets if (args.length > 0) { args.forEach(function(arg) { if (arg in target) target[arg](); else { console.log('no such target: ' + arg); exit(1); } }); } else if ('all' in target) { target.all(); } }, 0);