@webresto/cli
Version:
Webresto command line interface
65 lines (64 loc) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.repl = void 0;
const url = require('url');
var http = require('http');
var https = require('https');
const readline = require('readline');
var currentLine = "";
const repl = async (target, options) => {
if (!target)
throw 'URL required';
const opts = url.parse(target);
opts.method = 'PUT';
opts.headers = {
Expect: '100-continue'
};
let protocol = new URL(target).protocol;
let client = protocol == 'https:' ? https : http;
const req = client.request(opts);
opts.agent = new client.Agent({ keepAlive: true });
req.on('response', res => {
res.pipe(process.stdout);
res.on('end', function () {
process.exit(0);
});
});
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: true
});
rl.on('line', input => {
currentLine = "";
req.write(input);
req.write('\n');
});
rl.on('close', () => {
process.exit(0);
});
/**
* I want to release option to send special code like @tab${command}
* for ask REPL-server to autocomplete
*
* //TODO: currently need exception for left and rigth arrow (move cursor)
*/
process.stdin.on('keypress', (chunk, key) => {
if (key.name === 'tab') {
// console.log("tab")
console.log(`@tab${currentLine}`);
//req.write(`@tab${currentLine}`);
}
else if (key.name === 'backspace') {
currentLine = currentLine.slice(0, -1);
}
else if (key.name === 'left') {
currentLine += key.name;
}
else if (key.name.length === 1) {
currentLine += key.name;
}
// console.log(key.name)
});
};
exports.repl = repl;