mecano
Version:
Common functions for system deployment.
78 lines (74 loc) • 2.02 kB
JavaScript
// Generated by CoffeeScript 1.11.1
var fs, misc;
module.exports = function(options, callback) {
var content, do_file, do_get, merge, ssh, target;
options.log({
message: "Entering ini",
level: 'DEBUG',
module: 'mecano/lib/file/ini'
});
merge = options.merge, target = options.target, content = options.content, ssh = options.ssh;
if (options.clean == null) {
options.clean = true;
}
if (!content) {
return callback(new Error('Missing content'));
}
if (!target) {
return callback(new Error('Missing target'));
}
do_get = function() {
if (!merge) {
return do_file();
}
options.log({
message: "Get content for merge",
level: 'DEBUG',
module: 'mecano/lib/file/ini'
});
return fs.exists(ssh, target, function(err, exists) {
if (err) {
return callback(err);
}
if (!exists) {
return do_file();
}
return fs.readFile(ssh, target, '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_file();
});
});
};
do_file = (function(_this) {
return function() {
var stringify;
if (options.clean) {
options.log({
message: "Clean content",
level: 'INFO',
module: 'mecano/lib/file/ini'
});
misc.ini.clean(content);
}
options.log({
message: "Serialize content",
level: 'DEBUG',
module: 'mecano/lib/file/ini'
});
stringify = options.stringify || misc.ini.stringify;
options.content = stringify(content, options);
return _this.file(options, function(err, written) {
return callback(err, written);
});
};
})(this);
return do_get();
};
fs = require('ssh2-fs');
misc = require('../misc');