cl-diff-tool
Version:
command line diff tool
64 lines (45 loc) • 5.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _fs = require('fs');
var _fs2 = _interopRequireDefault(_fs);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _jsYaml = require('js-yaml');
var _jsYaml2 = _interopRequireDefault(_jsYaml);
var _ini = require('ini');
var _ini2 = _interopRequireDefault(_ini);
var _formats = require('./formats');
var _buildAst = require('./buildAst');
var _buildAst2 = _interopRequireDefault(_buildAst);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var parsers = {
json: JSON.parse,
yaml: _jsYaml2.default.safeLoad,
yml: _jsYaml2.default.safeLoad,
ini: _ini2.default.parse
};
var formatters = {
standart: _formats.standart,
plain: _formats.plain,
json: _formats.json
};
var isFilesExtEqual = function isFilesExtEqual(firstPath, secondPath) {
return _path2.default.extname(firstPath) === _path2.default.extname(secondPath);
};
exports.default = function (firstPath, secondPath) {
var format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'standart';
if (!isFilesExtEqual(firstPath, secondPath)) {
throw new Error('File types should be equal');
}
var configType = _path2.default.extname(secondPath).split('.').join('');
var beforeConfig = _fs2.default.readFileSync(firstPath, 'utf-8');
var afterConfig = _fs2.default.readFileSync(secondPath, 'utf-8');
var parseConfig = parsers[configType];
var beforeObject = parseConfig(beforeConfig);
var afterObject = parseConfig(afterConfig);
var ast = (0, _buildAst2.default)(beforeObject, afterObject, format);
return formatters[format](ast);
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJwYXJzZXJzIiwianNvbiIsIkpTT04iLCJwYXJzZSIsInlhbWwiLCJzYWZlTG9hZCIsInltbCIsImluaSIsImZvcm1hdHRlcnMiLCJzdGFuZGFydCIsInBsYWluIiwiaXNGaWxlc0V4dEVxdWFsIiwiZmlyc3RQYXRoIiwic2Vjb25kUGF0aCIsImV4dG5hbWUiLCJmb3JtYXQiLCJFcnJvciIsImNvbmZpZ1R5cGUiLCJzcGxpdCIsImpvaW4iLCJiZWZvcmVDb25maWciLCJyZWFkRmlsZVN5bmMiLCJhZnRlckNvbmZpZyIsInBhcnNlQ29uZmlnIiwiYmVmb3JlT2JqZWN0IiwiYWZ0ZXJPYmplY3QiLCJhc3QiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBLElBQU1BLFVBQVU7QUFDZEMsUUFBTUMsS0FBS0MsS0FERztBQUVkQyxRQUFNLGlCQUFXQyxRQUZIO0FBR2RDLE9BQUssaUJBQVdELFFBSEY7QUFJZEUsT0FBSyxjQUFVSjtBQUpELENBQWhCOztBQU9BLElBQU1LLGFBQWE7QUFDakJDLDZCQURpQjtBQUVqQkMsdUJBRmlCO0FBR2pCVDtBQUhpQixDQUFuQjtBQUtBLElBQU1VLGtCQUFrQixTQUFsQkEsZUFBa0IsQ0FBQ0MsU0FBRCxFQUFZQyxVQUFaO0FBQUEsU0FDdEIsZUFBS0MsT0FBTCxDQUFhRixTQUFiLE1BQTRCLGVBQUtFLE9BQUwsQ0FBYUQsVUFBYixDQUROO0FBQUEsQ0FBeEI7O2tCQUdlLFVBQUNELFNBQUQsRUFBWUMsVUFBWixFQUFnRDtBQUFBLE1BQXhCRSxNQUF3Qix1RUFBZixVQUFlOztBQUM3RCxNQUFJLENBQUNKLGdCQUFnQkMsU0FBaEIsRUFBMkJDLFVBQTNCLENBQUwsRUFBNkM7QUFDM0MsVUFBTSxJQUFJRyxLQUFKLENBQVUsNEJBQVYsQ0FBTjtBQUNEOztBQUVELE1BQU1DLGFBQWEsZUFBS0gsT0FBTCxDQUFhRCxVQUFiLEVBQXlCSyxLQUF6QixDQUErQixHQUEvQixFQUFvQ0MsSUFBcEMsQ0FBeUMsRUFBekMsQ0FBbkI7QUFDQSxNQUFNQyxlQUFlLGFBQUdDLFlBQUgsQ0FBZ0JULFNBQWhCLEVBQTJCLE9BQTNCLENBQXJCO0FBQ0EsTUFBTVUsY0FBYyxhQUFHRCxZQUFILENBQWdCUixVQUFoQixFQUE0QixPQUE1QixDQUFwQjs7QUFFQSxNQUFNVSxjQUFjdkIsUUFBUWlCLFVBQVIsQ0FBcEI7QUFDQSxNQUFNTyxlQUFlRCxZQUFZSCxZQUFaLENBQXJCO0FBQ0EsTUFBTUssY0FBY0YsWUFBWUQsV0FBWixDQUFwQjtBQUNBLE1BQU1JLE1BQU0sd0JBQVNGLFlBQVQsRUFBdUJDLFdBQXZCLEVBQW9DVixNQUFwQyxDQUFaO0FBQ0EsU0FBT1AsV0FBV08sTUFBWCxFQUFtQlcsR0FBbkIsQ0FBUDtBQUNELEMiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeWFtbFBhcnNlciBmcm9tICdqcy15YW1sJztcbmltcG9ydCBpbmlQYXJzZXIgZnJvbSAnaW5pJztcbmltcG9ydCB7IHN0YW5kYXJ0LCBwbGFpbiwganNvbiB9IGZyb20gJy4vZm9ybWF0cyc7XG5pbXBvcnQgYnVpbGRBc3QgZnJvbSAnLi9idWlsZEFzdCc7XG5cbmNvbnN0IHBhcnNlcnMgPSB7XG4gIGpzb246IEpTT04ucGFyc2UsXG4gIHlhbWw6IHlhbWxQYXJzZXIuc2FmZUxvYWQsXG4gIHltbDogeWFtbFBhcnNlci5zYWZlTG9hZCxcbiAgaW5pOiBpbmlQYXJzZXIucGFyc2UsXG59O1xuXG5jb25zdCBmb3JtYXR0ZXJzID0ge1xuICBzdGFuZGFydCxcbiAgcGxhaW4sXG4gIGpzb24sXG59O1xuY29uc3QgaXNGaWxlc0V4dEVxdWFsID0gKGZpcnN0UGF0aCwgc2Vjb25kUGF0aCkgPT5cbiAgcGF0aC5leHRuYW1lKGZpcnN0UGF0aCkgPT09IHBhdGguZXh0bmFtZShzZWNvbmRQYXRoKTtcblxuZXhwb3J0IGRlZmF1bHQgKGZpcnN0UGF0aCwgc2Vjb25kUGF0aCwgZm9ybWF0ID0gJ3N0YW5kYXJ0JykgPT4ge1xuICBpZiAoIWlzRmlsZXNFeHRFcXVhbChmaXJzdFBhdGgsIHNlY29uZFBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGaWxlIHR5cGVzIHNob3VsZCBiZSBlcXVhbCcpO1xuICB9XG5cbiAgY29uc3QgY29uZmlnVHlwZSA9IHBhdGguZXh0bmFtZShzZWNvbmRQYXRoKS5zcGxpdCgnLicpLmpvaW4oJycpO1xuICBjb25zdCBiZWZvcmVDb25maWcgPSBmcy5yZWFkRmlsZVN5bmMoZmlyc3RQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgYWZ0ZXJDb25maWcgPSBmcy5yZWFkRmlsZVN5bmMoc2Vjb25kUGF0aCwgJ3V0Zi04Jyk7XG5cbiAgY29uc3QgcGFyc2VDb25maWcgPSBwYXJzZXJzW2NvbmZpZ1R5cGVdO1xuICBjb25zdCBiZWZvcmVPYmplY3QgPSBwYXJzZUNvbmZpZyhiZWZvcmVDb25maWcpO1xuICBjb25zdCBhZnRlck9iamVjdCA9IHBhcnNlQ29uZmlnKGFmdGVyQ29uZmlnKTtcbiAgY29uc3QgYXN0ID0gYnVpbGRBc3QoYmVmb3JlT2JqZWN0LCBhZnRlck9iamVjdCwgZm9ybWF0KTtcbiAgcmV0dXJuIGZvcm1hdHRlcnNbZm9ybWF0XShhc3QpO1xufTtcblxuIl19