UNPKG

mecano

Version:

Common functions for system deployment.

124 lines (121 loc) 2.94 kB
// Generated by CoffeeScript 1.11.1 var uid_gid; module.exports = function(options, callback) { var do_compare, do_create, do_info, do_modify, info, modified; options.log({ message: "Entering group", level: 'DEBUG', module: 'mecano/lib/group' }); if (!options.name) { return callback(new Error("Option 'name' is required")); } if (options.system == null) { options.system = false; } if (options.gid == null) { options.gid = null; } modified = false; info = null; do_info = function() { options.log({ message: "Get group information for '" + options.name + "'", level: 'DEBUG', module: 'mecano/lib/group' }); options.store.cache_group = void 0; return uid_gid.group(options.ssh, options.store, function(err, groups) { if (err) { return callback(err); } info = groups[options.name]; options.log({ message: "Got " + (JSON.stringify(info)), level: 'INFO', module: 'mecano/lib/group' }); if (info) { return do_compare(); } else { return do_create(); } }); }; do_create = (function(_this) { return function() { var cmd; cmd = 'groupadd'; if (options.system) { cmd += " -r"; } if (options.gid) { cmd += " -g " + options.gid; } cmd += " " + options.name; return _this.execute({ cmd: cmd, code_skipped: 9 }, function(err, created) { if (err) { return callback(err); } if (created) { modified = true; } else { options.log({ message: "Group defined elsewhere than '/etc/group', exit code is 9", level: 'WARN', module: 'mecano/lib/group' }); } return callback(null, modified); }); }; })(this); do_compare = function() { var i, k, len, ref; ref = ['gid']; for (i = 0, len = ref.length; i < len; i++) { k = ref[i]; if ((options[k] != null) && info[k] !== options[k]) { modified = true; } } if (modified) { options.log({ message: "Group information modified", level: 'WARN', module: 'mecano/lib/group' }); } else { options.log({ message: "Group information unchanged", level: 'DEBUG', module: 'mecano/lib/group' }); } if (modified) { return do_modify(); } else { return callback(); } }; do_modify = (function(_this) { return function() { var cmd; cmd = 'groupmod'; if (options.gid) { cmd += " -g " + options.gid; } cmd += " " + options.name; return _this.execute({ cmd: cmd }, function(err) { return callback(err, modified); }); }; })(this); return do_info(); }; uid_gid = require('../misc/uid_gid');