mecano
Version:
Common functions for system deployment.
57 lines (53 loc) • 1.5 kB
JavaScript
// Generated by CoffeeScript 1.11.1
var fs, misc;
module.exports = function(options, callback) {
var do_chmod, do_stat;
options.log({
message: "Entering chmod",
level: 'DEBUG',
module: 'mecano/lib/chmod'
});
if (!options.target) {
return callback(Error("Missing target: " + (JSON.stringify(options.target))));
}
if (!options.mode) {
return callback(Error("Missing option 'mode'"));
}
do_stat = function() {
if (options.stat) {
return do_chmod(options.stat);
}
options.log({
message: "Stat \"" + options.target + "\"",
level: 'DEBUG',
module: 'mecano/lib/chmod'
});
return fs.stat(options.ssh, options.target, function(err, stat) {
if (err) {
return callback(err);
}
return do_chmod(stat);
});
};
do_chmod = function(stat) {
if (misc.mode.compare(stat.mode, options.mode)) {
options.log({
message: "Identical permissions on \"" + options.target + "\"",
level: 'INFO',
module: 'mecano/lib/chmod'
});
return callback();
}
return fs.chmod(options.ssh, options.target, options.mode, function(err) {
options.log({
message: "Change permissions from \"" + stat.mode + "\" to \"" + options.mode + "\" on \"" + options.target + "\"",
level: 'WARN',
module: 'mecano/lib/chmod'
});
return callback(err, true);
});
};
return do_stat();
};
fs = require('ssh2-fs');
misc = require('../misc');