mecano
Version:
Common functions for system deployment.
67 lines (63 loc) • 1.68 kB
JavaScript
// Generated by CoffeeScript 1.11.1
var fs, merge;
module.exports = function(options) {
if (options.content == null) {
options.content = {};
}
if (options.pretty == null) {
options.pretty = false;
}
if (options.pretty === true) {
options.pretty = 2;
}
if (options.transform == null) {
options.transform = null;
}
if (options.transform && typeof options.transform !== 'function') {
throw Error("Invalid options: \"transform\"");
}
this.call({
"if": options.merge
}, function(_, callback) {
return fs.readFile(options.ssh, options.target, 'utf8', function(err, json) {
if ((err != null ? err.code : void 0) === 'ENOENT') {
return callback();
}
if (!err) {
options.content = merge(JSON.parse(json), options.content);
}
return callback(err);
});
});
this.call({
"if": options.source
}, function(_, callback) {
var ssh;
ssh = options.local ? null : options.ssh;
return fs.readFile(ssh, options.source, 'utf8', function(err, json) {
if (!err) {
options.content = merge(JSON.parse(json), options.content);
}
return callback(err);
});
});
this.call({
"if": options.transform
}, function() {
return options.content = options.transform(options.content);
});
return this.file({
target: options.target,
content: function() {
return JSON.stringify(options.content, null, options.pretty);
},
backup: options.backup,
diff: options.diff,
eof: options.eof,
gid: options.gid,
uid: options.uid,
mode: options.mode
});
};
fs = require('ssh2-fs');
merge = require('../misc').merge;