mecano
Version:
Common functions for system deployment.
48 lines (44 loc) • 1.44 kB
JavaScript
// Generated by CoffeeScript 1.9.1
var fs, misc;
module.exports = function(options, callback) {
var do_chmod, do_stat;
if (!options.destination) {
return callback(Error("Missing destination: " + (JSON.stringify(options.destination))));
}
if (!options.mode) {
return callback(Error("Missing option 'mode'"));
}
do_stat = function() {
if (options.stat) {
return do_chmod(options.stat);
}
if (typeof options.log === "function") {
options.log("Mecano `chmod`: stat \"" + options.destination + "\" [DEBUG]");
}
return fs.stat(options.ssh, options.destination, function(err, stat) {
if (err) {
return callback(err);
}
return do_chmod(stat);
});
};
do_chmod = function(stat) {
if (misc.mode.compare(stat.mode, options.mode)) {
if (typeof options.log === "function") {
options.log("Mecano `chmod`: identical permissions on '" + options.destination + "' [INFO]");
}
return callback();
}
return fs.chmod(options.ssh, options.destination, options.mode, function(err) {
if (!err) {
if (typeof options.log === "function") {
options.log("Mecano `chmod`: change permissions from '" + stat.mode + "' to '" + options.mode + "' on '" + options.destination + "' [WARN]");
}
}
return callback(err, true);
});
};
return do_stat();
};
fs = require('ssh2-fs');
misc = require('./misc');