UNPKG

ramda-cli

Version:

A command-line tool for processing JSON with Ramda and LiveScript

108 lines (107 loc) 5.86 kB
// Generated by LiveScript 1.6.0 (function(){ var minimist, camelize, ref$, map, split, matchStr, pipe, replace, fromPairs, ifElse, identity, OUTPUT_TYPES, INPUT_TYPES, formatEnumList, HELP, parseAliases, wrapInParens, startsWith, wrapFunction, wrapNumberLookup, parseRawImport, parseImports, parse, help, out$ = typeof exports != 'undefined' && exports || this; minimist = require('minimist'); camelize = require('camelize'); ref$ = require('ramda'), map = ref$.map, split = ref$.split, matchStr = ref$.match, pipe = ref$.pipe, replace = ref$.replace, fromPairs = ref$.fromPairs, ifElse = ref$.ifElse, identity = ref$.identity; OUTPUT_TYPES = ['json', 'pretty', 'raw', 'csv', 'tsv', 'table']; INPUT_TYPES = ['json', 'raw', 'csv', 'tsv']; formatEnumList = compose$(function(it){ return it.join(', '); }, (function(it){ return 'one of: ' + it; })); HELP = "Usage: ramda [options] [function] ...\n\n -I, --interactive run interactively in browser\n -f, --file read a function from a js/ls file instead of args; useful for\n larger scripts\n -c, --compact compact output for JSON and tables\n -s, --slurp read JSON objects from stdin as one big list\n -S, --unslurp unwraps a list before output so that each item is formatted and\n printed separately\n -t, --transduce use pipeline as a transducer to transform stdin\n -P, --json-path parse stream with JSONPath expression\n -i, --input-type read input from stdin as (" + formatEnumList(INPUT_TYPES) + ")\n -o, --output-type format output sent to stdout (" + formatEnumList(OUTPUT_TYPES) + ")\n -p, --pretty pretty-printed output with colors, alias to -o pretty\n -D, --pretty-depth set how deep objects are pretty printed\n -r, --raw-input alias for --input-type raw\n -R, --raw-output alias for --output-type raw\n -n, --no-stdin don't read input from stdin\n --[no-]headers csv/tsv has a header row\n --csv-delimiter custom csv delimiter character\n --js use javascript instead of livescript\n --import import a module from npm\n -C, --configure edit config in $EDITOR\n -v, --verbose print debugging information (use -vv for even more)\n --version print version\n -h, --help displays help\n\nIf multiple functions are given as strings, they are composed into a\npipeline in order from left to right, similarly to R.pipe.\n\nExamples:\n\n curl -Ls http://bit.do/countries-json | ramda 'take 5' 'pluck \\name' --pretty\n curl -Ls http://bit.do/countries-json | ramda 'find where-eq code: \\FI'\n curl -Ls http://bit.do/countries-json | ramda --js 'filter(c => test(/land$/, c.name))'\n seq 10 | ramda --raw-input --slurp 'map parse-int' sum\n date +%s | ramda -r --import moment:m 'm.unix'\n\n\nREADME: https://github.com/raine/ramda-cli"; parseAliases = pipe(matchStr(/-[a-z], --[a-z\-]+/ig), map(compose$(replace(/\B-/g, ''), split(', '))), fromPairs); wrapInParens = function(str){ return "(" + str + ")"; }; startsWith = function(str){ return function(it){ return (it != null ? it.indexOf(str) : void 8) === 0; }; }; wrapFunction = ifElse(startsWith('->'), wrapInParens, identity); wrapNumberLookup = ifElse(function(it){ return it.match(/^.\d+$/); }, wrapInParens, identity); parseRawImport = function(str){ var ref$, packageSpec, alias; ref$ = str.split(':'), packageSpec = ref$[0], alias = ref$[1]; return { packageSpec: packageSpec, alias: alias }; }; parseImports = function(argvImport){ var importsRawArr; importsRawArr = typeof argvImport === 'string' ? [argvImport] : argvImport; return importsRawArr.map(parseRawImport); }; out$.parse = parse = function(argv){ var opts, ref$; argv = map(compose$(wrapFunction, wrapNumberLookup), argv.slice(2)); opts = camelize(minimist(argv, { string: ['file', 'input-type', 'output-type', 'json-path', 'csv-delimiter'], boolean: ['compact', 'slurp', 'unslurp', 'pretty', 'verbose', 'version', 'raw-input', 'raw-output', 'configure', 'no-stdin', 'js', 'transduce', 'headers', 'interactive'], alias: parseAliases(HELP), 'default': { stdin: true, headers: true, 'csv-delimiter': ',', 'import': [], 'input-type': 'json' } })); opts._ = opts['']; delete opts['']; if (opts.rawInput) { opts.inputType = 'raw'; } if (opts.rawOutput) { opts.outputType = 'raw'; } if (opts.pretty) { opts.outputType = 'pretty'; } if (opts.outputType != null && !in$(opts.outputType, OUTPUT_TYPES)) { throw new Error("Output type should be " + formatEnumList(OUTPUT_TYPES)); } if (opts.inputType != null && !in$(opts.inputType, INPUT_TYPES)) { throw new Error("Input type should be " + formatEnumList(INPUT_TYPES)); } if (in$('-vv', argv)) { opts.veryVerbose = true; } if (in$('-n', argv)) { opts.stdin = false; } opts['import'] = parseImports(opts['import']); if ((ref$ = opts.inputType) === 'csv' || ref$ === 'tsv') { opts.slurp = true; } if ((ref$ = opts.outputType) === 'csv' || ref$ === 'tsv') { opts.unslurp = true; } return opts; }; out$.help = help = function(){ return HELP; }; function compose$() { var functions = arguments; return function() { var i, result; result = functions[0].apply(this, arguments); for (i = 1; i < functions.length; ++i) { result = functions[i](result); } return result; }; } function in$(x, xs){ var i = -1, l = xs.length >>> 0; while (++i < l) if (x === xs[i]) return true; return false; } }).call(this);