UNPKG

mecano

Version:

Common functions for system deployment.

119 lines (118 loc) 3.79 kB
// Generated by CoffeeScript 1.9.1 module.exports = function(options, callback) { var do_end, do_startuped, modified, startup_add, startup_del; if (!options.name) { return callback(new Error("Missing required option 'name'")); } if (options.startup == null) { return callback(new Error("Missing required option 'startup'")); } modified = false; do_startuped = (function(_this) { return function() { return _this.execute({ cmd: "chkconfig --list " + options.name, code_skipped: 1 }, function(err, registered, stdout, stderr) { var c, current_startup, j, len, level, ref, ref1, status; if (err) { return callback(err); } if (/^error/.test(stderr)) { if (typeof options.log === "function") { options.log("Mecano `service_startup`: Invalid chkconfig name for `" + options.name + "` [ERROR]"); } return callback(new Error("Invalid chkconfig name for `" + options.name + "`")); } current_startup = ''; if (registered) { ref = stdout.split(' ').pop().trim().split('\t'); for (j = 0, len = ref.length; j < len; j++) { c = ref[j]; ref1 = c.split(':'), level = ref1[0], status = ref1[1]; if (['on', 'marche'].indexOf(status) > -1) { current_startup += level; } } } if (options.startup === true && current_startup.length) { return do_end(); } if (options.startup === current_startup) { return do_end(); } if (registered && options.startup === false && current_startup === '') { return do_end(); } modified = true; if (options.startup) { return startup_add(); } else { return startup_del(); } }); }; })(this); startup_add = (function(_this) { return function() { var cmd, i, j, startup_off, startup_on; cmd = "chkconfig --add " + options.name + ";"; if (typeof options.startup === 'string') { startup_on = startup_off = ''; for (i = j = 0; j < 6; i = ++j) { if (options.startup.indexOf(i) !== -1) { startup_on += i; } else { startup_off += i; } } if (startup_on) { cmd += "chkconfig --level " + startup_on + " " + options.name + " on;"; } if (startup_off) { cmd += "chkconfig --level " + startup_off + " " + options.name + " off;"; } } else { cmd += "chkconfig " + options.name + " on;"; } return _this.execute({ cmd: cmd }, function(err) { if (err) { return callback(err); } if (typeof options.log === "function") { options.log("Mecano `service_startup`: " + options.name + " on [INFO]"); } return do_end(); }); }; })(this); startup_del = (function(_this) { return function() { if (typeof options.log === "function") { options.log("Mecano `service_startup`: startup off"); } return _this.execute({ cmd: "chkconfig " + options.name + " off" }, function(err) { if (err) { return callback(err); } if (typeof options.log === "function") { options.log("Mecano `service_startup`: " + options.name + " off [INFO]"); } return do_end(); }); }; })(this); do_end = function() { if (!modified) { if (typeof options.log === "function") { options.log("Mecano `service_startup`: " + options.name + " not modified [DEBUG]"); } } return callback(null, modified); }; return do_startuped(); };