diff --git a/bin/esm-cli.js b/bin/esm-cli.js index 994fdcb..9d3e714 100755 --- a/bin/esm-cli.js +++ b/bin/esm-cli.js @@ -1,6 +1,7 @@ #!/usr/bin/env node - const { resolve } = require('path') +const { exec, spawn } = require('child_process') + const switches = { json: false }, switchReg = /^=/ let params = process.argv.slice(2) params = params.map( p=> switchReg.test(p) ? (switches[p.slice(1)] = true, null) : p ) @@ -11,14 +12,14 @@ const [ esmodule, exported ] = (moduleStr || '').split(':') const optionReg = /^-{1,2}(.*?)([:=](.*?))?$/ const args = params.filter( s=> optionReg.test(s) ) - .reduce( (opt,str)=> { - let [ , prop, , value ] = optionReg.exec(str) - return Object.assign( opt, {[prop]: value || true} ) - // return hasValue ? { ...opt, [prop]: value || true } - // : opt - }, - params.filter( s=> !optionReg.test(s) ) - ) + .reduce( (opt,str)=> { + let [ , prop, , value ] = optionReg.exec(str) + return Object.assign( opt, {[prop]: value || true} ) + // return hasValue ? { ...opt, [prop]: value || true } + // : opt + }, + params.filter( s=> !optionReg.test(s) ) + ) const package = resolve('./package.json') , modulo = resolve(esmodule) @@ -26,23 +27,28 @@ const package = resolve('./package.json') //console.log( process.cwd(), package, modulo ) //console.log( process.argv, esmodule, exported, args ) -let mod = -require('esm')( module, {await: true} ) -( modulo || require(package).module ) +require = require('esm')( module, {await: true} ) -let toCall = mod[ exported || 'default' ] -let returned = - typeof toCall == 'function' - ? toCall( args ) - : toCall const render = obj=> switches.json - ? process.stdout.write( obj&& JSON.stringify(obj,null,'\t') || '' ) - : console.log( obj || '' ) + ? process.stdout.write( obj&& JSON.stringify(obj,null,'\t') || '' ) + : console.log( obj || '' ) + + +let mod = require( modulo || require(package).module ) +// console.log(mod) + +let toCall = mod[ exported || 'default' ] +// console.log(mod, exported, toCall) +let returned = + typeof toCall == 'function' + ? toCall( args ) + : toCall //console.log( 'type' , typeof returned, returned instanceof Promise ) returned instanceof Promise - ? returned.then( render, e=>console.error(e) ) - : render( returned ) + ? returned.then( render, e=>console.error(e) ) + : render(returned) module.exports = mod + \ No newline at end of file