UNPKG

elasticdump

Version:
76 lines (68 loc) 2.39 kB
const _ = require('lodash') const { readFileSync } = require('fs') const path = require('path') class argv { constructor (config) { this.options = config.options || {} this.jsonParsedOpts = config.jsonParsedOpts || [ 'searchBody', 'input-headers', 'headers', 'output-headers', 'input-params', 'params', 'output-params', 's3Options', 's3Configs', 'csvConfigs' ] this.parseJSONOpts = config.parseJSONOpts } parse (argv, defaults, parseJSONOpts = false) { // parse passed options & use defaults otherwise for (const i in defaults) { this.options[i] = argv[i] || defaults[i] if (this.options[i] === 'true') { this.options[i] = true } if (this.options[i] === 'false') { this.options[i] = false } if (this.options[i] === 'Infinity') { this.options[i] = Infinity } if (this.options[i] === 'null') { this.options[i] = null } if (i === 'interval' && _.isNumber(argv[i])) { // special case to handle value == 0 this.options[i] = argv[i] } if (i === 'bulkAction' && !/(index|update|delete|create)/.test(this.options[i])) { throw Error(`Unsupported action detected in bulkAction property : ${this.options[i]}`) } } if (parseJSONOpts || this.parseJSONOpts) { // parse whitelisted json formatted options for (const i of this.jsonParsedOpts) { if (/^(searchBody|s3Options|s3Configs|csvConfigs)$/.test(i) && _.startsWith(this.options[i], '@')) { const resolvedFilePath = path.resolve(process.cwd(), this.options[i].substring(1)) this.options[i] = readFileSync(resolvedFilePath).toString() } if (this.options[i]) { this.options[i] = JSON.parse(this.options[i]) } } } } log (type, message) { if (type === 'debug') { if (this.options.debug === true) { message = `${new Date().toUTCString()} [debug] | ${message}` console.log(message) } else { return false } } else if (type === 'error') { message = `${new Date().toUTCString()} | ${message}` console.error(message) } else if (this.options.quiet === false) { message = `${new Date().toUTCString()} | ${message}` console.log(message) } else { return false } } } module.exports = argv