guvnor
Version:
A node process manager that isn't spanners all the way down
72 lines (55 loc) • 1.68 kB
JavaScript
var util = require('util')
var PersistentStore = require('./PersistentStore')
var path = require('path')
var PersistentProcessInfoStore = function (factoryName, fileName) {
PersistentStore.call(this, factoryName, fileName)
}
util.inherits(PersistentProcessInfoStore, PersistentStore)
PersistentProcessInfoStore.prototype.save = function (callback) {
this._jsonfile.writeFile(this._file, this._store.map(this._removeRuntimeProperties.bind(this)), {
mode: parseInt('0600', 8)
}, callback)
}
PersistentProcessInfoStore.prototype.saveSync = function () {
this._jsonfile.writeFileSync(this._file, this._store.map(this._removeRuntimeProperties.bind(this)), {
mode: parseInt('0600', 8)
})
}
PersistentProcessInfoStore.prototype._removeRuntimeProperties = function (processInfo) {
var output = JSON.parse(JSON.stringify(processInfo))
delete output.id
delete output.pid
delete output.debugPort
delete output.restarts
delete output.totalRestarts
delete output.status
delete output.socket
delete output.manager
if (!output.debug) {
delete output.debug
}
if (!processInfo.cluster) {
delete output.instances
}
delete output.cluster
if (path.dirname(output.script) === output.cwd) {
delete output.cwd
}
if (output.argv.length === 0) {
delete output.argv
}
if (output.execArgv.length === 0) {
delete output.execArgv
}
if (output.restartOnError) {
delete output.restartOnError
}
if (output.restartRetries === 5) {
delete output.restartRetries
}
if (output.name === path.basename(output.script)) {
delete output.name
}
return output
}
module.exports = PersistentProcessInfoStore