UNPKG

cmder-cli

Version:

namespace shell commands cli

104 lines (81 loc) 3.4 kB
process.cmder = { dev: true ,clientDir: require('./lib/dir')() } ; process.cmder.config = require('./lib/config')() ; const resolvePath = require('./lib/resolve-path') ,cliColor = require('cli-color') ,resolveCmd = require('./lib/resolve-cmd') ,child = require('child_process') ; require('./lib/inject-cmd-package')(); module.exports = { async exec( path , separator = null , powershell = true ) { if(process.cmder.config['@@cmder-empty']) { return console.log( cliColor.red.bold('\n\t > exec command is not possible because , you define commands in your config file but config file not exists ❌') ); } if( typeof path !== 'string' ){ console.log( cliColor.red.bold('\n\t > exec command not possible because , arg1 bust be an string but is ',( typeof path ),' ❌') ); return false; } const cmds = resolvePath( path , separator ); if( !cmds || !cmds.length ) { if( process.cmder.dev ) console.log( cliColor.yellow( "\n⚠️ no commands to exec with `",path.trim(),"` , use `boolean cmder.exists( string: path )` , if you want test array commands exists .") ); return [/* { err:err , stdout:stdout, stderr:stderr } */]; } return Promise.all( cmds.map( cmd => { const cmdExec = resolveCmd( cmd ) ; return new Promise( (resolve,reject) => ( child.exec( cmdExec , { cwd: process.cmder.clientDir ,shell: !!powershell ? 'powershell':'cmd' }, (err,stdout,stderr) => ( err ? reject( err , stderr ) : resolve( { stdout: stdout ,stderr: stderr ,cmd: { brut: cmd ,exec: cmdExec } } ) ) ) ) ) } ) ) ; } ,out(responses) { try { responses = [...responses] ; } catch( TypeError ) { console.log( cliColor.red.bold('out responses not possible arg1 bust an array ❌') ); return false; } console.log( cliColor.green('\n>start show out for' , responses.length , ' commands :\n' ) ); responses .filter( response => typeof response === 'object' && typeof response.cmd === 'object' && typeof response.stdout === 'string' ) .forEach( (response,key) => ( console.log( cliColor.cyan( '\t- '+(key+1) , '. entry : ' , response.cmd.exec, '\t - \tout : ' , response.stdout.replace('\n',' ') ) ) )); return true; } ,exists: function( path , separator = null ) { return !!resolvePath( path , separator ) ; } ,dev: status => ( process.cmder.dev = !!status ) } ; // client > cmder.exec('group/truc') ; // client > cmder.exec('group/npm/truc[1]');