UNPKG

mecano

Version:

Common functions for system deployment.

94 lines (89 loc) 2.47 kB
// Generated by CoffeeScript 1.11.1 var fs, quote, string; module.exports = function(options) { var properties; options.log({ message: "Entering file.ini", level: 'DEBUG', module: 'mecano/lib/file.ini' }); if (!options.target) { throw Error("Missing argument options.target"); } if (options.separator == null) { options.separator = '='; } if (options.content == null) { options.content = {}; } if (options.sort == null) { options.sort = false; } properties = options.merge ? {} : options.content; options.log({ message: "Merging \"" + (options.merge ? 'true' : 'false') + "\"", level: 'DEBUG', module: 'mecano/lib/file.ini' }); this.call({ "if": options.merge, handler: function(_, callback) { options.log({ message: "Reading target \"" + options.target + "\"", level: 'DEBUG', module: 'mecano/lib/file.ini' }); return fs.readFile(options.ssh, options.target, 'utf8', function(err, data) { var i, k, len, line, lines, ref, ref1, v; if (err) { return callback(err); } lines = string.lines(data); for (i = 0, len = lines.length; i < len; i++) { line = lines[i]; if (/^#/.test(line)) { continue; } if (/^\w*$/.test(line)) { continue; } ref = RegExp("^(.*?)" + (quote(options.separator)) + "(.*)$").exec(line), _ = ref[0], k = ref[1], v = ref[2]; properties[k] = v; } ref1 = options.content; for (k in ref1) { v = ref1[k]; if (v === null) { delete properties[k]; } else { properties[k] = v; } } return callback(); }); } }); return this.call(function() { var data, key, keys; keys = options.sort ? Object.keys(properties).sort() : Object.keys(properties); data = (function() { var i, len, results; results = []; for (i = 0, len = keys.length; i < len; i++) { key = keys[i]; results.push("" + key + options.separator + properties[key]); } return results; })(); data = data.join('\n'); return this.file({ target: "" + options.target, content: data, backup: options.backup, eof: true }); }); }; fs = require('ssh2-fs'); quote = require('regexp-quote'); string = require('../misc/string');