Browse Source

refactor

master
demo 3 years ago
parent
commit
dcf6486372
2 changed files with 1299 additions and 1198 deletions
  1. 69
    0
      cliverse.js
  2. 1230
    1198
      index.js

+ 69
- 0
cliverse.js View File

@@ -0,0 +1,69 @@
const { spawn, spawnSync } = require('child_process');
const fs = require('fs')

function nodeShellExec() {

var args = Array.from(arguments);
var opts = args[2] = args[2] || {}
opts.title ? null : opts.title = `${args[0]} ${args[1] }`
const child = spawn(...arguments);
var p = new Promise(function(resolve, reject){
if(!opts.detached) {
var messages = []; // PB : TODO -- Explore stream for Task level aggregation to prevent interleaved messages from multiple tasks...
var success = true;
if(opts.stdio !== 'ignore') {
child.stdout.setEncoding('utf8');
child.stderr.setEncoding('utf8');
child.stdout.on('data', (chunk) => { chunk.trim() === '' ? null : messages.push(chunk); /* console.log('d: ' + chunk) */ });
child.on('error', (chunk) => { success = false; messages.push(chunk); /* console.error('e: ' + chunk) */ } );
child.stderr.on('data', (chunk) => {
if(messages.join('').indexOf('fatal: not a git repository') > -1) opts.haserrors = true;
messages.push(chunk);
// console.error('stderr e: ' + chunk)
});
}
child.on('close', (code) => {
if(+code !== 0 || opts.haserrors) success = false;
if(opts.stdio !== 'ignore') {
var logEntry = { result: `${opts.title} exited with code ${code}`, messages }
logEntry.success = success;
if(opts.runas){
// success ? logEntry.success = true : null;
fs.writeFileSync('run.log', ', ' + JSON.stringify(logEntry), {'flag':'a+'} )
}
else {
// console.log( messages.join('') )
process.stdout.write( messages.join('') )
}
}
if(code !== 0 || opts.haserrors) return reject(logEntry)
resolve(logEntry)
});
}
else {
child.unref()
resolve(true);
}
});
p.process = child;
return p;
}

const readline = require("readline");

var cli = {
nodeShellExec
, get prompt() {
const clii = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// clii.on("close", function() { });
return clii
}
}

module.exports = cli

+ 1230
- 1198
index.js
File diff suppressed because it is too large
View File


Loading…
Cancel
Save