require('./global'); 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 global.target) console.log(' ' + t); return; } // Wrap targets to prevent duplicate execution for (t in global.target) { (function(t, oldTarget){ // Wrap it global.target[t] = function(force) { if (oldTarget.done && !force) return; oldTarget.done = true; return oldTarget.apply(oldTarget, arguments); }; })(t, global.target[t]); } // Execute desired targets if (args.length > 0) { args.forEach(function(arg) { if (arg in global.target) global.target[arg](); else { console.log('no such target: ' + arg); } }); } else if ('all' in global.target) { global.target.all(); } }, 0);