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) [![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) [![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) [![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 Command-line JSON processing tool

31
fx.js

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

@ -20,7 +20,7 @@
"test": "ava", "test": "ava",
"build": "pkg . --out-path dist -t node8-linux-x64,node8-macos-x64,node8-win-x64", "build": "pkg . --out-path dist -t node8-linux-x64,node8-macos-x64,node8-win-x64",
"zip": "cd dist && find . -name 'fx-*' -exec zip '{}.zip' '{}' \\;", "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": [ "keywords": [
"json", "json",
@ -40,7 +40,6 @@
"@medv/blessed": "^2.0.0", "@medv/blessed": "^2.0.0",
"chalk": "^2.4.2", "chalk": "^2.4.2",
"indent-string": "^3.2.0", "indent-string": "^3.2.0",
"reopen-tty": "^1.1.2",
"string-width": "^3.0.0" "string-width": "^3.0.0"
}, },
"devDependencies": { "devDependencies": {

Loading…
Cancel
Save