function writeConfig(env) { var plist = require('plist') , config = require('./config/config')[env] , path = require('path') /** * Setup launchdaemons */ var dunkyPlistObj = {}; dunkyPlistObj['Label'] = appName dunkyPlistObj['ProgramArguments'] = [ config.nodePath , path.join(__dirname, 'server.js') ] dunkyPlistObj['RunAtLoad'] = true dunkyPlistObj['KeepAlive'] = true dunkyPlistObj['EnvironmentVariables'] = { NODE_ENV: env }; dunkyPlistObj['StandardErrorPath'] = path.join(config.logsDir, 'com.dunkydooball.server.error.log') dunkyPlistObj['StandardOutPath'] = path.join(config.logsDir, 'com.dunkydooball.server.output.log') // generate the plist var plistData = plist.build(dunkyPlistObj).toString() // write it to file fs.writeFileSync(appCTLPath, plistData, 'utf8') console.log('info: '.cyan, 'Successfully created DunkyDooball Server configuration file') plistData = null var socketPlistObj = {}; socketPlistObj['Label'] = socketServerName socketPlistObj['ProgramArguments'] = [ config.nodePath , path.join(__dirname, 'utils', 'socketserver.js') ] socketPlistObj['RunAtLoad'] = true socketPlistObj['KeepAlive'] = true socketPlistObj['EnvironmentVariables'] = { NODE_ENV: env, PATH: "/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:/usr/sbin" }; // IMPORTANT...required for privilege separation socketPlistObj['UserName'] = config.nodeUser socketPlistObj['StandardErrorPath'] = path.join(config.logsDir, 'com.dunkydooball.socketserver.error.log') socketPlistObj['StandardOutPath'] = path.join(config.logsDir, 'com.dunkydooball.socketserver.output.log') // generate the plist plistData = plist.build(socketPlistObj).toString() // write it to file fs.writeFileSync(socketCTLPath, plistData, 'utf8') console.log('info: '.cyan, 'Successfully created DunkyDooball Socket Server configuration file') ctl.loadSync(socketCTLPath) ctl.loadSync(appCTLPath) }
utils.load = function(p) { var res try { res = ctl.loadSync(p) if (res !== 0) { var e = ctl.errorFromCode(res) return e } } catch(e) { return e } return res }
function loadPath(p) { try { var res = ctl.loadSync(p) if (res !== 0) { console.log('error:'.red, 'Error loading: '+p) var e = ctl.errorFromErrno(res) console.log('error:'.red, e) throw e } } catch (e) { console.log('error:'.red, 'Error loading: '+p) console.log('error:'.red, e) throw e } }