From 4a0bc1fb030e50f6b6e05254b1bb865e8856d18c Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Mon, 25 May 2015 21:08:05 -0400 Subject: [PATCH] finished up executable rewrite, and prettified reset script output --- app.js | 34 +++++++++++++------- nodebb | 88 +++++++++++++++++++++++++++++++++++++--------------- package.json | 1 + 3 files changed, 86 insertions(+), 37 deletions(-) diff --git a/app.js b/app.js index 8ff5647023..4e677df7c1 100644 --- a/app.js +++ b/app.js @@ -29,6 +29,7 @@ var fs = require('fs'), async = require('async'), semver = require('semver'), winston = require('winston'), + colors = require('colors'), path = require('path'), pkg = require('./package.json'), utils = require('./public/src/utils.js'); @@ -274,17 +275,19 @@ function reset() { process.exit(); } - if (nconf.get('theme')) { + if (nconf.get('t')) { resetThemes(); - } else if (nconf.get('plugin')) { - resetPlugin(nconf.get('plugin')); - } else if (nconf.get('plugins')) { - resetPlugins(); - } else if (nconf.get('widgets')) { + } else if (nconf.get('p')) { + if (nconf.get('p') === true) { + resetPlugins(); + } else { + resetPlugin(nconf.get('p')); + } + } else if (nconf.get('w')) { resetWidgets(); - } else if (nconf.get('settings')) { + } else if (nconf.get('s')) { resetSettings(); - } else if (nconf.get('all')) { + } else if (nconf.get('a')) { require('async').series([resetWidgets, resetThemes, resetPlugins, resetSettings], function(err) { if (!err) { winston.info('[reset] Reset complete.'); @@ -294,10 +297,17 @@ function reset() { process.exit(); }); } else { - winston.warn('[reset] Nothing reset.'); - winston.info('Use ./nodebb reset {theme|plugins|widgets|settings|all}'); - winston.info(' or'); - winston.info('Use ./nodebb reset plugin="nodebb-plugin-pluginName"'); + process.stdout.write('\nNodeBB Reset\n'.bold); + process.stdout.write('No arguments passed in, so nothing was reset.\n\n'.yellow); + process.stdout.write('Use ./nodebb reset ' + '{-t|-p|-w|-s|-a}\n'.red); + process.stdout.write(' -t\tthemes\n'); + process.stdout.write(' -p\tplugins\n'); + process.stdout.write(' -w\twidgets\n'); + process.stdout.write(' -s\tsettings\n'); + process.stdout.write(' -a\tall of the above\n'); + + process.stdout.write('\nPlugin reset flag (-p) can take a single argument\n'); + process.stdout.write(' e.g. ./nodebb reset -p nodebb-plugin-mentions\n'); process.exit(); } }); diff --git a/nodebb b/nodebb index dd05fbf841..37a783ec79 100755 --- a/nodebb +++ b/nodebb @@ -3,7 +3,10 @@ var colors = require('colors'), cproc = require('child_process'), argv = require('minimist')(process.argv.slice(2)), - fs = require('fs'); + fs = require('fs'), + async = require('async'), + touch = require('touch'), + npm = require('npm'); var getRunningPid = function(callback) { fs.readFile(__dirname + '/pidfile', { @@ -88,6 +91,65 @@ switch(process.argv[2]) { }); break; + case 'log': + process.stdout.write('\nType '.red + 'Ctrl-C '.bold + 'to exit\n\n'.red); + cproc.spawn('tail', ['-F', './logs/output.log'], { + cwd: __dirname, + stdio: 'inherit' + }); + break; + + case 'setup': + cproc.fork('app.js', ['--setup'], { + cwd: __dirname, + silent: false + }); + break; + + case 'reset': + var args = process.argv.slice(0); + args.unshift('--reset'); + + cproc.fork('app.js', args, { + cwd: __dirname, + silent: false + }); + break; + + case 'upgrade': + async.series([ + function(next) { + process.stdout.write('1. '.bold + 'Bringing base dependencies up to date\n'.yellow); + npm.load({ + loglevel: 'silent' + }, function() { + npm.commands.install(next); + }); + }, + function(next) { + process.stdout.write('2. '.bold + 'Updating NodeBB data store schema\n'.yellow); + var upgradeProc = cproc.fork('app.js', ['--upgrade'], { + cwd: __dirname, + silent: false + }); + + upgradeProc.on('close', next) + }, + function(next) { + process.stdout.write('3. '.bold + 'Storing upgrade date in "package.json"\n'.yellow); + touch(__dirname + '/package.json', {}, next); + } + ], function(err) { + if (err) { + process.stdout.write('\nError'.red + ': ' + err.message + '\n'); + } else { + var message = 'NodeBB Upgrade Complete!', + spaces = new Array(Math.floor(process.stdout.columns / 2) - (message.length / 2) + 1).join(' '); + process.stdout.write('\n' + spaces + message.green.bold + '\n\n'); + } + }); + break; + default: process.stdout.write('\nWelcome to NodeBB\n\n'.bold); process.stdout.write('Usage: ./nodebb {start|stop|reload|restart|log|setup|reset|upgrade|dev}\n\n'); @@ -104,27 +166,3 @@ switch(process.argv[2]) { process.stdout.write('\n'); break; } - -/* - log) - clear; - tail -F ./logs/output.log; - ;; - - upgrade) - npm install - # ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm install - # ls -d node_modules/nodebb* | xargs -n1 basename | xargs npm update - npm i nodebb-theme-vanilla nodebb-theme-lavender nodebb-widget-essentials - "$node" app --upgrade - touch package.json - ;; - - setup) - "$node" app --setup "$@" - ;; - - reset) - "$node" app --reset --$2 - ;; -*/ \ No newline at end of file diff --git a/package.json b/package.json index 6fd4275862..908cda8d9c 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "socketio-wildcard": "~0.1.1", "string": "^3.0.0", "templates.js": "^0.2.3", + "touch": "0.0.3", "uglify-js": "git+https://github.com/julianlam/UglifyJS2.git", "underscore": "~1.8.3", "validator": "^3.30.0",