Fix bug with synchronous reopening of tty on unix

js-version
Anton Medvedev 5 years ago
parent 7501e5a81b
commit 44d95c6c8d

@ -6,7 +6,7 @@ _* Function eXecution_
[![Build Status](https://travis-ci.org/antonmedv/fx.svg?branch=master)](https://travis-ci.org/antonmedv/fx)
[![Npm Version](https://img.shields.io/npm/v/fx.svg)](https://www.npmjs.com/package/fx)
[![Brew Version](https://img.shields.io/homebrew/v/fx.svg)](https://formulae.brew.sh/formula/fx)
[![Snap Version](https://img.shields.io/badge/snap-11.0.0-blue.svg)](https://snapcraft.io/fx)
[![Snap Version](https://img.shields.io/badge/snap-12.0.0-blue.svg)](https://snapcraft.io/fx)
Command-line JSON processing tool

31
fx.js

@ -1,7 +1,8 @@
'use strict'
const fs = require('fs')
const tty = require('tty')
const blessed = require('@medv/blessed')
const stringWidth = require('string-width')
const reopenTTY = require('reopen-tty')
const reduce = require('./reduce')
const print = require('./print')
const find = require('./find')
@ -25,30 +26,24 @@ module.exports = function start(filename, source) {
let findGen = null
let currentPath = null
// Reopen tty
let ttyReadStream
let ttyWriteStream
reopenTTY.stdin(function (err, readStream) {
if (err) {
throw err
} else {
ttyReadStream = readStream
}
})
reopenTTY.stdout(function (err, writeStream) {
if (err) {
throw err
} else {
ttyWriteStream = writeStream
}
})
if (process.platform === 'win32') {
const cfs = process.binding('fs')
ttyReadStream = tty.ReadStream(cfs.open('conin$', fs.constants.O_RDWR | fs.constants.O_EXCL, 0o666))
ttyWriteStream = tty.WriteStream(cfs.open('conout$', fs.constants.O_RDWR | fs.constants.O_EXCL, 0o666))
} else {
const ttyFd = fs.openSync('/dev/tty', 'r+')
ttyReadStream = tty.ReadStream(ttyFd)
ttyWriteStream = tty.WriteStream(ttyFd)
}
const program = blessed.program({
input: ttyReadStream,
output: ttyWriteStream
output: ttyWriteStream,
})
const screen = blessed.screen({
program: program,
smartCSR: true,

@ -20,7 +20,7 @@
"test": "ava",
"build": "pkg . --out-path dist -t node8-linux-x64,node8-macos-x64,node8-win-x64",
"zip": "cd dist && find . -name 'fx-*' -exec zip '{}.zip' '{}' \\;",
"release": "npm run build && npm run zip && release-it --github.release --github.assets=dist/*.zip"
"release": "rm -rf ./dist && npm run build && npm run zip && release-it --github.release --github.assets=dist/*.zip"
},
"keywords": [
"json",
@ -40,7 +40,6 @@
"@medv/blessed": "^2.0.0",
"chalk": "^2.4.2",
"indent-string": "^3.2.0",
"reopen-tty": "^1.1.2",
"string-width": "^3.0.0"
},
"devDependencies": {

Loading…
Cancel
Save