Comparing version 0.0.7 to 0.0.8-1
@@ -63,4 +63,10 @@ var flatiron = require('flatiron'), | ||
autostart.exec = function (command, callback) { | ||
autostart.log.info('Executing command ' + command.join(' ').magenta); | ||
if (command.length > 0) { | ||
autostart.log.info('Executing command ' + command.join(' ').magenta); | ||
} | ||
// | ||
// Default install action | ||
// | ||
if (command[0] === 'command' || command[0] === 'service') { | ||
@@ -67,0 +73,0 @@ command[1] = 'install'; |
@@ -0,5 +1,70 @@ | ||
var autostart = require('../../autostart'), | ||
errs = require('errs'), | ||
os = require('os'), | ||
platform = autostart.argv.platform || os.platform(); | ||
var service = exports; | ||
service.usage = [ | ||
'this is service' | ||
'Install a init.d or SMF service', | ||
'', | ||
' autostart service install', | ||
'', | ||
'Parameters:', | ||
'--platform - default (' + os.platform().bold + ')', | ||
'--start', | ||
'--stop - default (:kill)' | ||
]; | ||
service.install = function (callback) { | ||
var addon; | ||
var name = autostart.argv.name, | ||
start = autostart.argv.start, | ||
stop = autostart.argv.stop || ':kill'; | ||
if (typeof callback != 'function') { | ||
return autostart.showError(errs.create({ name: 'Arguments', message: 'Bad arguments, please check your command' })); | ||
} | ||
try { | ||
addon = require('../' + platform); | ||
} catch (err) { | ||
} | ||
if (!addon) { | ||
return callback(errs.create({ name: 'Platform', message: 'No platform found (' + platform.bold + ')', platform: platform })); | ||
} | ||
if (!name) { | ||
return callback(errs.create({ name: 'Arguments', message: "--name required" })); | ||
} | ||
if (!start) { | ||
return callback(errs.create({ name: 'Arguments', message: "--start required" })); | ||
} | ||
// | ||
// Override root folder | ||
// | ||
if (autostart.argv.root) { | ||
autostart.config.set('root', autostart.argv.root); | ||
} | ||
var service = { | ||
name: name, | ||
start: start, | ||
stop: stop | ||
}; | ||
addon.service(service, function (err) { | ||
if (err) { | ||
return callback(errs.merge(err)); | ||
} | ||
autostart.log.info('Creating autostart service'); | ||
autostart.inspect.putObject({ service: service }); | ||
callback(); | ||
}); | ||
} |
@@ -68,4 +68,31 @@ var autostart = require('../autostart'); | ||
sunos.service = function (name, start, stop, callback) { | ||
callback(new Error('Not implemented')); | ||
sunos.service = function (service, callback) { | ||
var root = autostart.config.get('root'); | ||
var files = autostart.config.get('files'); | ||
async.series([ | ||
// Create /opt/custom/smf folder | ||
function (next) { | ||
mkdirp(path.join(root, 'opt', 'custom', 'smf'), function (err) { | ||
return err ? next(err) : next(); | ||
}); | ||
}, | ||
// Create service.xml file | ||
function (next) { | ||
fs.readFile(path.join(files, 'sunos', 'service.xml'), 'utf8', function (err, script) { | ||
if (err) { | ||
return next(err); | ||
} | ||
var template = Handlebars.compile(script); | ||
var result = template(service); | ||
fs.writeFile(path.join(root, 'opt', 'custom', 'smf', service.name + '.xml'), result, { mode: 0644 }, function (err) { | ||
return err ? next(err) : next(); | ||
}); | ||
}); | ||
} | ||
], function (err) { | ||
return err ? callback(errs.merge(err)) : callback(); | ||
}); | ||
}; |
{ | ||
"name": "autostart", | ||
"version": "0.0.7", | ||
"version": "0.0.8-1", | ||
"description": "Multiplatform autostart tool for Node.js applications", | ||
@@ -5,0 +5,0 @@ "main": "./lib/autostart.js", |
@@ -26,3 +26,3 @@ # autostart [](https://travis-ci.org/julianduque/node-autostart) | ||
## Supported Platforms | ||
* SunOS - Command: `ok` - Service: `pending` | ||
* SunOS - Command: `ok` - Service: `ok` | ||
* Linux - Command: `pending` - Service: `pending` | ||
@@ -29,0 +29,0 @@ * Darwin - Command: `peding` - Service: `pending` |
@@ -19,8 +19,17 @@ // | ||
autostartScript = fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'sunos', 'autostart.sh'), 'utf8'), | ||
serviceManifest = fs.readFileSync(path.join(__dirname, '..', 'fixtures', 'sunos', 'myapp.xml'), 'utf8'), | ||
root = autostart.config.get('root'), | ||
command = "node app.js > output", | ||
service = { | ||
name: 'myapp', | ||
start: "node app.js", | ||
stop: "exit 0" | ||
stop: ":kill" | ||
}; | ||
root = autostart.config.get('root'), | ||
command = "node app.js > output", | ||
service = { | ||
name: 'myapp', | ||
start: "node app.js &", | ||
stop: ":kill" | ||
}; | ||
@@ -62,3 +71,21 @@ describe('SunOS Addon', function () { | ||
}); | ||
before(function (next) { | ||
sunos.service(service, function (err) { | ||
assert.ok(!err); | ||
next(); | ||
}); | ||
}); | ||
after(function (next) { | ||
if (root != '/') { | ||
rimraf(path.join(root, 'opt'), next); | ||
} | ||
}); | ||
it('should install service manifest', function () { | ||
var manifest = fs.readFileSync(path.join(root, 'opt', 'custom', 'smf', service.name + '.xml'), 'utf8'); | ||
assert.equal(serviceManifest, manifest); | ||
}); | ||
}); | ||
}); |
17433
16
341
4