UNPKG

ramda-cli

Version:

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

144 lines (143 loc) 5.26 kB
// Generated by LiveScript 1.6.0 (function(){ var vm, JSONStream, Path, split2, fs, camelize, argv, config, compileFun, through, R, apply, isNil, append, flip, type, replace, merge, map, join, forEach, split, head, pickBy, tap, pipe, concat, take, identity, isEmpty, reverse, invoker, fromPairs, mergeAll, path, reduce, objOf, assocPath, adjust, toPairs, inspect, ref$, HOME, lines, words, takeLines, processInputStream, debug, installImports, main; vm = require('vm'); JSONStream = require('JSONStream'); Path = require('path'); split2 = require('split2'); fs = require('fs'); camelize = require('camelize'); argv = require('./argv'); config = require('./config'); compileFun = require('./compile-fun'); through = require('through2'); R = require('ramda'), apply = R.apply, isNil = R.isNil, append = R.append, flip = R.flip, type = R.type, replace = R.replace, merge = R.merge, map = R.map, join = R.join, forEach = R.forEach, split = R.split, head = R.head, pickBy = R.pickBy, tap = R.tap, pipe = R.pipe, concat = R.concat, take = R.take, identity = R.identity, isEmpty = R.isEmpty, reverse = R.reverse, invoker = R.invoker, fromPairs = R.fromPairs, mergeAll = R.mergeAll, path = R.path, reduce = R.reduce, objOf = R.objOf, assocPath = R.assocPath, adjust = R.adjust, toPairs = R.toPairs; inspect = require('util').inspect; ref$ = require('./utils'), HOME = ref$.HOME, lines = ref$.lines, words = ref$.words, takeLines = ref$.takeLines; processInputStream = require('./stream').processInputStream; debug = require('debug')('ramda-cli:main'); installImports = async function(opts, stderr){ var npmInstall, pkgSpecs; if (opts['import'].length) { npmInstall = require('./npm-install').npmInstall; pkgSpecs = opts['import'].map(function(it){ return it.packageSpec; }); return (await npmInstall(pkgSpecs, opts['import'], stderr)); } }; main = async function(processArgv, stdin, stdout, stderr){ var logError, die, opts, e, stringArgv, server, fun, stack, code, imports, err; stdout.on('error', function(it){ if (it.code === 'EPIPE') { return process.exit(0); } }); debug({ argv: processArgv }); logError = compose$((function(it){ return it + '\n'; }), bind$(stderr, 'write')); die = function(err){ var msg; msg = err.stack ? takeLines(1, err.stack) : err; logError(msg); return process.exit(1); }; try { opts = argv.parse(processArgv); } catch (e$) { e = e$; return die([argv.help(), e.message].join('\n\n')); } debug(pickBy((function(it){ return it !== false; }), opts)); if (opts.help) { return die(argv.help()); } if (opts.version) { return die(require('../package.json').version); } if (opts.configure) { config.edit(function(err){ if (err !== 0 || err) { return die(err); } else { return process.exit(0); } }); return; } if (opts.interactive) { stringArgv = require('string-argv'); server = (await require('./server').start(stdin, stderr, processArgv, async function(newStdin, input){ var newOpts, imports, fun, message; server.close(); try { newOpts = argv.parse(stringArgv(input, 'node', 'dummy.js')); imports = (await installImports(opts, stderr)); fun = (await compileFun(newOpts, imports, stderr)); } catch (e$) { message = e$.message; return die("Error: " + message); } return processInputStream(die, newOpts, fun, newStdin, stdout).on('end', function(){ return process.exit(); }); })); return; } if (opts.file) { try { fun = require(Path.resolve(opts.file)); } catch (e$) { stack = e$.stack, code = e$.code; return (await (async function(){ switch (code) { case 'MODULE_NOT_FOUND': return die(head(lines(stack))); default: return die(stack); } }())); } if (typeof fun !== 'function') { return die("Error: " + opts.file + " does not export a function"); } if (fun.opts) { import$(opts, argv.parse([void 8, void 8].concat(words(fun.opts)))); } } else { try { imports = (await installImports(opts, stderr)); fun = (await compileFun(opts, imports, stderr)); } catch (e$) { err = e$; return die("Error: " + err.message); } } return processInputStream(die, opts, fun, stdin, stdout); }; module.exports = main; 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 bind$(obj, key, target){ return function(){ return (target || obj)[key].apply(obj, arguments) }; } function import$(obj, src){ var own = {}.hasOwnProperty; for (var key in src) if (own.call(src, key)) obj[key] = src[key]; return obj; } }).call(this);