UNPKG

nmvikings_gendiff

Version:

Compares two configuration files and shows a difference.

70 lines (56 loc) 6.02 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } var createString = function createString(path, action) { return 'Property \'' + path.join('.') + '\' was ' + action; }; var renderValue = function renderValue(value) { if (value instanceof Object) return '[complex value]'; if (typeof value === 'string') return '\'' + value + '\''; return value; }; var renderPlain = function renderPlain(ast) { var iter = function iter(nodes, parents) { var mapping = { 'not updated': function notUpdated() { return null; }, updated: function updated(_ref) { var name = _ref.name, type = _ref.type, value = _ref.value; return createString([].concat(_toConsumableArray(parents), [name]), type) + '. From ' + renderValue(value.old) + ' to ' + renderValue(value.new); }, removed: function removed(_ref2) { var name = _ref2.name, type = _ref2.type; return createString([].concat(_toConsumableArray(parents), [name]), type); }, added: function added(_ref3) { var name = _ref3.name, type = _ref3.type, value = _ref3.value; return createString([].concat(_toConsumableArray(parents), [name]), type) + ' with value: ' + renderValue(value); }, nested: function nested(_ref4) { var name = _ref4.name, children = _ref4.children; return iter(children, parents.concat(name)); } }; var newNodes = nodes.map(function (node) { return mapping[node.type](node); }).filter(function (s) { return !!s; }); return _lodash2.default.flatten(newNodes).join('\n'); }; return iter(ast, []); }; exports.default = renderPlain; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJzL3JlbmRlclBsYWluLmpzIl0sIm5hbWVzIjpbImNyZWF0ZVN0cmluZyIsInBhdGgiLCJhY3Rpb24iLCJqb2luIiwicmVuZGVyVmFsdWUiLCJ2YWx1ZSIsIk9iamVjdCIsInJlbmRlclBsYWluIiwiYXN0IiwiaXRlciIsIm5vZGVzIiwicGFyZW50cyIsIm1hcHBpbmciLCJ1cGRhdGVkIiwibmFtZSIsInR5cGUiLCJvbGQiLCJuZXciLCJyZW1vdmVkIiwiYWRkZWQiLCJuZXN0ZWQiLCJjaGlsZHJlbiIsImNvbmNhdCIsIm5ld05vZGVzIiwibWFwIiwibm9kZSIsImZpbHRlciIsInMiLCJfIiwiZmxhdHRlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsSUFBTUEsZUFBZSxTQUFmQSxZQUFlLENBQUNDLElBQUQsRUFBT0MsTUFBUDtBQUFBLHlCQUErQkQsS0FBS0UsSUFBTCxDQUFVLEdBQVYsQ0FBL0IsZUFBc0RELE1BQXREO0FBQUEsQ0FBckI7O0FBRUEsSUFBTUUsY0FBYyxTQUFkQSxXQUFjLENBQUNDLEtBQUQsRUFBVztBQUM3QixNQUFJQSxpQkFBaUJDLE1BQXJCLEVBQTZCLE9BQU8saUJBQVA7O0FBRTdCLE1BQUksT0FBT0QsS0FBUCxLQUFpQixRQUFyQixFQUErQixjQUFXQSxLQUFYOztBQUUvQixTQUFPQSxLQUFQO0FBQ0QsQ0FORDs7QUFRQSxJQUFNRSxjQUFjLFNBQWRBLFdBQWMsQ0FBQ0MsR0FBRCxFQUFTO0FBQzNCLE1BQU1DLE9BQU8sU0FBUEEsSUFBTyxDQUFDQyxLQUFELEVBQVFDLE9BQVIsRUFBb0I7QUFDL0IsUUFBTUMsVUFBVTtBQUNkLHFCQUFlO0FBQUEsZUFBTSxJQUFOO0FBQUEsT0FERDtBQUVkQyxlQUFTO0FBQUEsWUFBR0MsSUFBSCxRQUFHQSxJQUFIO0FBQUEsWUFBU0MsSUFBVCxRQUFTQSxJQUFUO0FBQUEsWUFBZVYsS0FBZixRQUFlQSxLQUFmO0FBQUEsZUFBOEJMLDBDQUFpQlcsT0FBakIsSUFBMEJHLElBQTFCLElBQWlDQyxJQUFqQyxDQUE5QixlQUE4RVgsWUFBWUMsTUFBTVcsR0FBbEIsQ0FBOUUsWUFBMkdaLFlBQVlDLE1BQU1ZLEdBQWxCLENBQTNHO0FBQUEsT0FGSztBQUdkQyxlQUFTO0FBQUEsWUFBR0osSUFBSCxTQUFHQSxJQUFIO0FBQUEsWUFBU0MsSUFBVCxTQUFTQSxJQUFUO0FBQUEsZUFBb0JmLDBDQUFpQlcsT0FBakIsSUFBMEJHLElBQTFCLElBQWlDQyxJQUFqQyxDQUFwQjtBQUFBLE9BSEs7QUFJZEksYUFBTztBQUFBLFlBQUdMLElBQUgsU0FBR0EsSUFBSDtBQUFBLFlBQVNDLElBQVQsU0FBU0EsSUFBVDtBQUFBLFlBQWVWLEtBQWYsU0FBZUEsS0FBZjtBQUFBLGVBQThCTCwwQ0FBaUJXLE9BQWpCLElBQTBCRyxJQUExQixJQUFpQ0MsSUFBakMsQ0FBOUIscUJBQW9GWCxZQUFZQyxLQUFaLENBQXBGO0FBQUEsT0FKTztBQUtkZSxjQUFRO0FBQUEsWUFBR04sSUFBSCxTQUFHQSxJQUFIO0FBQUEsWUFBU08sUUFBVCxTQUFTQSxRQUFUO0FBQUEsZUFBd0JaLEtBQUtZLFFBQUwsRUFBZVYsUUFBUVcsTUFBUixDQUFlUixJQUFmLENBQWYsQ0FBeEI7QUFBQTtBQUxNLEtBQWhCOztBQVFBLFFBQU1TLFdBQVdiLE1BQU1jLEdBQU4sQ0FBVTtBQUFBLGFBQVFaLFFBQVFhLEtBQUtWLElBQWIsRUFBbUJVLElBQW5CLENBQVI7QUFBQSxLQUFWLEVBQTRDQyxNQUE1QyxDQUFtRDtBQUFBLGFBQUssQ0FBQyxDQUFDQyxDQUFQO0FBQUEsS0FBbkQsQ0FBakI7O0FBRUEsV0FBT0MsaUJBQUVDLE9BQUYsQ0FBVU4sUUFBVixFQUFvQnBCLElBQXBCLENBQXlCLElBQXpCLENBQVA7QUFDRCxHQVpEOztBQWNBLFNBQU9NLEtBQUtELEdBQUwsRUFBVSxFQUFWLENBQVA7QUFDRCxDQWhCRDs7a0JBa0JlRCxXIiwiZmlsZSI6InJlbmRlclBsYWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgY3JlYXRlU3RyaW5nID0gKHBhdGgsIGFjdGlvbikgPT4gYFByb3BlcnR5ICcke3BhdGguam9pbignLicpfScgd2FzICR7YWN0aW9ufWA7XG5cbmNvbnN0IHJlbmRlclZhbHVlID0gKHZhbHVlKSA9PiB7XG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkgcmV0dXJuICdbY29tcGxleCB2YWx1ZV0nO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gYCcke3ZhbHVlfSdgO1xuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmNvbnN0IHJlbmRlclBsYWluID0gKGFzdCkgPT4ge1xuICBjb25zdCBpdGVyID0gKG5vZGVzLCBwYXJlbnRzKSA9PiB7XG4gICAgY29uc3QgbWFwcGluZyA9IHtcbiAgICAgICdub3QgdXBkYXRlZCc6ICgpID0+IG51bGwsXG4gICAgICB1cGRhdGVkOiAoeyBuYW1lLCB0eXBlLCB2YWx1ZSB9KSA9PiBgJHtjcmVhdGVTdHJpbmcoWy4uLnBhcmVudHMsIG5hbWVdLCB0eXBlKX0uIEZyb20gJHtyZW5kZXJWYWx1ZSh2YWx1ZS5vbGQpfSB0byAke3JlbmRlclZhbHVlKHZhbHVlLm5ldyl9YCxcbiAgICAgIHJlbW92ZWQ6ICh7IG5hbWUsIHR5cGUgfSkgPT4gY3JlYXRlU3RyaW5nKFsuLi5wYXJlbnRzLCBuYW1lXSwgdHlwZSksXG4gICAgICBhZGRlZDogKHsgbmFtZSwgdHlwZSwgdmFsdWUgfSkgPT4gYCR7Y3JlYXRlU3RyaW5nKFsuLi5wYXJlbnRzLCBuYW1lXSwgdHlwZSl9IHdpdGggdmFsdWU6ICR7cmVuZGVyVmFsdWUodmFsdWUpfWAsXG4gICAgICBuZXN0ZWQ6ICh7IG5hbWUsIGNoaWxkcmVuIH0pID0+IGl0ZXIoY2hpbGRyZW4sIHBhcmVudHMuY29uY2F0KG5hbWUpKSxcbiAgICB9O1xuXG4gICAgY29uc3QgbmV3Tm9kZXMgPSBub2Rlcy5tYXAobm9kZSA9PiBtYXBwaW5nW25vZGUudHlwZV0obm9kZSkpLmZpbHRlcihzID0+ICEhcyk7XG5cbiAgICByZXR1cm4gXy5mbGF0dGVuKG5ld05vZGVzKS5qb2luKCdcXG4nKTtcbiAgfTtcblxuICByZXR1cm4gaXRlcihhc3QsIFtdKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlbmRlclBsYWluO1xuIl19