csvutil
Version:
84 lines (66 loc) • 3.3 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.DefaultConfig = exports.OutputFormat = exports.DEFAULT_COLUMN_WIDTH = undefined;
exports.configIsValid = configIsValid;
exports.parse = parse;
var _ramda = require('ramda');
var _ramda2 = _interopRequireDefault(_ramda);
var _tcombValidation = require('tcomb-validation');
var _tcombValidation2 = _interopRequireDefault(_tcombValidation);
var _clearRequire = require('clear-require');
var _clearRequire2 = _interopRequireDefault(_clearRequire);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var packageDotJson = require('../package.json');
var DEFAULT_COLUMN_WIDTH = exports.DEFAULT_COLUMN_WIDTH = 16;
var OutputFormat = exports.OutputFormat = {
PRETTY: 'pretty',
CSV: 'csv',
MD: 'md',
NONE: 'none'
};
var OutputFormatEnum = _tcombValidation2.default.enums(_ramda2.default.invertObj(OutputFormat));
var OUTPUT_FORMAT_REGEX = /^(pretty|csv|md|none)$/i;
var Rows = _tcombValidation2.default.refinement(_tcombValidation2.default.Number, function (n) {
return n % 1 === 0 && n >= 0;
}, 'Integer');
var COLUMN_MIN_WIDTH = 5;
var COLUMN_MAX_WIDTH = 50;
var ColumnWidth = _tcombValidation2.default.refinement(_tcombValidation2.default.Number, function (n) {
return n % 1 === 0 && n > COLUMN_MIN_WIDTH && n <= COLUMN_MAX_WIDTH;
}, 'ColumnWidth');
var Config = _tcombValidation2.default.struct({
pathA: _tcombValidation2.default.maybe(_tcombValidation2.default.String),
pathB: _tcombValidation2.default.maybe(_tcombValidation2.default.String),
rows: Rows,
output: OutputFormatEnum,
width: ColumnWidth,
buildStringBuffer: _tcombValidation2.default.maybe(_tcombValidation2.default.Bool)
});
var DefaultConfig = exports.DefaultConfig = {
pathA: null,
pathB: null,
rows: 10,
output: 'pretty',
width: 16,
buildStringBuffer: false
};
function stringEnumeration(enumObject) {
return _ramda2.default.pipe(_ramda2.default.values, function (v) {
return JSON.stringify(v);
}, _ramda2.default.replace(/",/g, ', '), _ramda2.default.replace(/"/g, ''))(enumObject);
}
function configIsValid(config) {
return _tcombValidation2.default.validate(config, Config).isValid();
}
function parse(args) {
(0, _clearRequire2.default)('commander');
var program = require('commander').version(packageDotJson.version.toString()).option('-a, --path-a <path>', 'source csv path').option('-b, --path-b <path>', 'comparison csv path (for diff)').option('-r, --rows [n]', 'max rows to output (0 for unlimited)', parseInt).option('-o, --output [output]', 'output format ' + stringEnumeration(OutputFormat), OUTPUT_FORMAT_REGEX, DefaultConfig.format).option('-w, --width [n]', 'max width for pretty & md columns [' + COLUMN_MIN_WIDTH + ' - ' + COLUMN_MAX_WIDTH + ']', parseInt).parse(args);
var keys = _ramda2.default.keys(Config.meta.props);
return _ramda2.default.pipe(_ramda2.default.pickAll(keys), _ramda2.default.reduce(function (accum, value) {
return _ramda2.default.isNil(accum[value]) ? _ramda2.default.assoc(value, DefaultConfig[value], accum) : accum;
}, _ramda2.default.__, keys), function (c) {
return configIsValid(c) ? c : null;
})(program);
}
;