updating nodebb executable so that it is a node script instead of bash script

v1.18.x
Julian Lam
parent fc2efb0c83
commit e6061810f9

220
nodebb

@ -1,86 +1,111 @@
#!/bin/bash #!/usr/bin/env node
# $0 script path var colors = require('colors'),
# $1 action cproc = require('child_process'),
# $2 subaction argv = require('minimist')(process.argv.slice(2)),
fs = require('fs');
node="$(which nodejs 2>/dev/null)";
if [ $? -gt 0 ]; var getRunningPid = function(callback) {
then node="$(which node)"; fs.readFile(__dirname + '/pidfile', {
fi encoding: 'utf-8'
}, function(err, pid) {
function pidExists() { if (err) {
if [ -e "pidfile" ]; return callback(err);
then
if ps -p $(cat pidfile) > /dev/null
then return 1;
else
rm ./pidfile;
return 0;
fi
else
return 0;
fi
} }
case "$1" in try {
start) process.kill(parseInt(pid, 10), 0);
echo "Starting NodeBB"; callback(null, parseInt(pid, 10));
echo " \"./nodebb stop\" to stop the NodeBB server"; } catch(e) {
echo " \"./nodebb log\" to view server output"; callback(e);
echo " \"./nodebb restart\" to restart NodeBB"; }
});
# Start the loader daemon };
"$node" loader "$@"
;; switch(process.argv[2]) {
case 'status':
stop) getRunningPid(function(err, pid) {
pidExists; if (!err) {
if [ 0 -eq $? ]; process.stdout.write('\nNodeBB Running '.bold + '(pid '.cyan + pid.toString().cyan + ')\n'.cyan);
then process.stdout.write('\t"' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
echo "NodeBB is already stopped."; process.stdout.write('\t"' + './nodebb log'.yellow + '" to view server output\n');
else process.stdout.write('\t"' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
echo "Stopping NodeBB. Goodbye!"; } else {
kill $(cat pidfile); process.stdout.write('\nNodeBB is not running\n'.bold);
fi process.stdout.write('\t"' + './nodebb start'.yellow + '" to launch the NodeBB server\n\n');
;; }
})
restart) break;
pidExists;
if [ 0 -eq $? ]; case 'start':
then process.stdout.write('\nStarting NodeBB\n'.bold);
echo "NodeBB could not be restarted, as a running instance could not be found."; process.stdout.write(' "' + './nodebb stop'.yellow + '" to stop the NodeBB server\n');
else process.stdout.write(' "' + './nodebb log'.yellow + '" to view server output\n');
echo "Restarting NodeBB."; process.stdout.write(' "' + './nodebb restart'.yellow + '" to restart NodeBB\n\n');
kill -1 $(cat pidfile);
fi // Spawn a new NodeBB process
;; cproc.fork(__dirname + '/loader.js', {
env: process.env,
reload) detatched: true
pidExists; });
if [ 0 -eq $? ]; break;
then
echo "NodeBB could not be reloaded, as a running instance could not be found."; case 'stop':
else getRunningPid(function(err, pid) {
echo "Reloading NodeBB."; if (!err) {
kill -12 $(cat pidfile); process.kill(pid, 'SIGTERM');
fi process.stdout.write('Stopping NodeBB. Goodbye!\n')
;; } else {
process.stdout.write('NodeBB is already stopped.\n');
status) }
pidExists; });
if [ 0 -eq $? ]; break;
then
echo "NodeBB is not running"; case 'restart':
echo " \"./nodebb start\" to launch the NodeBB server"; getRunningPid(function(err, pid) {
else if (!err) {
echo "NodeBB Running (pid $(cat pidfile))"; process.kill(pid, 'SIGHUP');
echo " \"./nodebb stop\" to stop the NodeBB server"; } else {
echo " \"./nodebb log\" to view server output"; process.stdout.write('NodeBB could not be restarted, as a running instance could not be found.');
echo " \"./nodebb restart\" to restart NodeBB"; }
fi });
;; break;
case 'reload':
getRunningPid(function(err, pid) {
if (!err) {
process.kill(pid, 'SIGUSR2');
} else {
process.stdout.write('NodeBB could not be reloaded, as a running instance could not be found.');
}
});
break;
case 'dev':
process.env.NODE_ENV = 'development';
cproc.fork(__dirname + '/loader.js', ['--no-daemon', '--no-silent'], {
env: process.env
});
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');
process.stdout.write('\t' + 'start'.yellow + '\tStart the NodeBB server\n');
process.stdout.write('\t' + 'stop'.yellow + '\tStops the NodeBB server\n');
process.stdout.write('\t' + 'reload'.yellow + '\tRestarts NodeBB\n');
process.stdout.write('\t' + 'restart'.yellow + '\tRestarts NodeBB\n');
process.stdout.write('\t' + 'log'.yellow + '\tOpens the logging interface (useful for debugging)\n');
process.stdout.write('\t' + 'setup'.yellow + '\tRuns the NodeBB setup script\n');
process.stdout.write('\t' + 'reset'.yellow + '\tDisables all plugins, restores the default theme.\n');
process.stdout.write('\t' + 'upgrade'.yellow + '\tRun NodeBB upgrade scripts, ensure packages are up-to-date\n');
process.stdout.write('\t' + 'dev'.yellow + '\tStart NodeBB in interactive development mode\n');
process.stdout.write('\t' + 'watch'.yellow + '\tStart NodeBB in development mode and watch for changes\n');
process.stdout.write('\n');
break;
}
/*
log) log)
clear; clear;
tail -F ./logs/output.log; tail -F ./logs/output.log;
@ -102,37 +127,4 @@ case "$1" in
reset) reset)
"$node" app --reset --$2 "$node" app --reset --$2
;; ;;
*/
dev)
echo "Launching NodeBB in \"development\" mode."
echo "To run the production build of NodeBB, please use \"forever\"."
echo "More Information: https://docs.nodebb.org/en/latest/running/index.html"
NODE_ENV=development "$node" loader --no-daemon --no-silent "$@"
;;
watch)
echo "***************************************************************************"
echo "WARNING: ./nodebb watch will be deprecated soon. Please use grunt: "
echo "https://docs.nodebb.org/en/latest/running/index.html#grunt-development"
echo "***************************************************************************"
NODE_ENV=development supervisor -q --ignore public/templates,public/nodebb.min.js,public/nodebb.min.js.map --extensions 'node|js|tpl|less' -- app "$@"
;;
*)
echo "Welcome to NodeBB"
echo $"Usage: $0 {start|stop|reload|restart|log|setup|reset|upgrade|dev|watch}"
echo ''
column -s ' ' -t <<< '
start Start the NodeBB server
stop Stops the NodeBB server
reload Restarts NodeBB
restart Restarts NodeBB
log Opens the logging interface (useful for debugging)
setup Runs the NodeBB setup script
reset Disables all plugins, restores the default theme.
upgrade Run NodeBB upgrade scripts, ensure packages are up-to-date
dev Start NodeBB in interactive development mode
watch Start NodeBB in development mode and watch for changes
'
exit 1
esac

@ -17,6 +17,7 @@
"async": "~0.9.0", "async": "~0.9.0",
"bcryptjs": "~2.1.0", "bcryptjs": "~2.1.0",
"body-parser": "^1.9.0", "body-parser": "^1.9.0",
"colors": "^1.1.0",
"compression": "^1.1.0", "compression": "^1.1.0",
"connect-ensure-login": "^0.1.1", "connect-ensure-login": "^0.1.1",
"connect-flash": "^0.1.1", "connect-flash": "^0.1.1",
@ -34,6 +35,7 @@
"logrotate-stream": "^0.2.3", "logrotate-stream": "^0.2.3",
"lru-cache": "^2.6.1", "lru-cache": "^2.6.1",
"mime": "^1.3.4", "mime": "^1.3.4",
"minimist": "^1.1.1",
"mkdirp": "~0.5.0", "mkdirp": "~0.5.0",
"mmmagic": "^0.3.13", "mmmagic": "^0.3.13",
"morgan": "^1.3.2", "morgan": "^1.3.2",
@ -44,11 +46,11 @@
"nodebb-plugin-mentions": "^0.11.2", "nodebb-plugin-mentions": "^0.11.2",
"nodebb-plugin-soundpack-default": "^0.1.1", "nodebb-plugin-soundpack-default": "^0.1.1",
"nodebb-plugin-spam-be-gone": "^0.4.0", "nodebb-plugin-spam-be-gone": "^0.4.0",
"nodebb-rewards-essentials": "^0.0.1",
"nodebb-theme-lavender": "^1.0.42", "nodebb-theme-lavender": "^1.0.42",
"nodebb-theme-vanilla": "^1.0.130",
"nodebb-theme-persona": "^0.1.55", "nodebb-theme-persona": "^0.1.55",
"nodebb-theme-vanilla": "^1.0.130",
"nodebb-widget-essentials": "^1.0.2", "nodebb-widget-essentials": "^1.0.2",
"nodebb-rewards-essentials": "^0.0.1",
"npm": "^2.1.4", "npm": "^2.1.4",
"passport": "^0.2.1", "passport": "^0.2.1",
"passport-local": "1.0.0", "passport-local": "1.0.0",

Loading…
Cancel
Save