mecano
Version:
Common functions for system deployment.
64 lines (60 loc) • 1.77 kB
JavaScript
// Generated by CoffeeScript 1.9.1
var fs, misc;
module.exports = function(options, callback) {
var content, destination, do_get, do_write, merge, ssh;
merge = options.merge, destination = options.destination, content = options.content, ssh = options.ssh;
if (options.clean == null) {
options.clean = true;
}
if (!content) {
return callback(new Error('Missing content'));
}
if (!destination) {
return callback(new Error('Missing destination'));
}
do_get = function() {
if (!merge) {
return do_write();
}
if (typeof options.log === "function") {
options.log("Mecano `ini`: get content for merge");
}
return fs.exists(ssh, destination, function(err, exists) {
if (err) {
return callback(err);
}
if (!exists) {
return do_write();
}
return fs.readFile(ssh, destination, 'ascii', function(err, c) {
var parse;
if (err && err.code !== 'ENOENT') {
return callback(err);
}
content = misc.ini.clean(content, true);
parse = options.parse || misc.ini.parse;
content = misc.merge(parse(c, options), content);
return do_write();
});
});
};
do_write = (function(_this) {
return function() {
var stringify;
if (typeof options.log === "function") {
options.log("Mecano `ini`: write");
}
if (options.clean) {
misc.ini.clean(content);
}
stringify = options.stringify || misc.ini.stringify;
options.content = stringify(content, options);
return _this.write(options, function(err, written) {
return callback(err, written);
});
};
})(this);
return do_get();
};
fs = require('ssh2-fs');
misc = require('./misc');