From cccc9a62a76a3f1a59199ae3b3e566d229d63b2f Mon Sep 17 00:00:00 2001 From: Simon Lydell Date: Sun, 5 Jul 2020 13:03:45 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + .prettierrc.json | 3 +++ Makefile | 3 +++ index.js | 35 +++++++++++++++++++++++++++++++++++ package-lock.json | 25 +++++++++++++++++++++++++ package.json | 9 +++++++++ script.bash | 3 +++ slow.bash | 6 ++++++ 8 files changed, 85 insertions(+) create mode 100644 .gitignore create mode 100644 .prettierrc.json create mode 100644 Makefile create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100755 script.bash create mode 100755 slow.bash diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..d2504b4 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "proseWrap": "never" +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7431979 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +.PHONY: run +run: + ./script.bash diff --git a/index.js b/index.js new file mode 100644 index 0000000..9ac5864 --- /dev/null +++ b/index.js @@ -0,0 +1,35 @@ +const pty = require("node-pty"); + +const options = { + cols: process.stdout.columns, + rows: process.stdout.rows, +}; + +// const terminal = pty.spawn("nvim", [], options); +// const terminal = pty.spawn("pwd", ["-P"], options); +const terminal = pty.spawn("./slow.bash", [], options); +console.clear(); +console.log(terminal.pid, terminal.process); + +process.stdout.on("resize", () => { + terminal.resize(process.stdout.columns, process.stdout.rows); +}); + +process.stdin.setRawMode(true); +process.stdin.setEncoding("utf8"); +process.stdin.on("data", (data) => { + if (data === "\x03") { + terminal.kill(); + } else { + terminal.write(data); + } +}); + +terminal.on("data", (data) => { + process.stdout.write(data); +}); + +terminal.on("exit", (exitCode, signal) => { + console.log("Exit", exitCode, signal); + process.exit(exitCode); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e971dba --- /dev/null +++ b/package-lock.json @@ -0,0 +1,25 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" + }, + "node-pty": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-0.9.0.tgz", + "integrity": "sha512-MBnCQl83FTYOu7B4xWw10AW77AAh7ThCE1VXEv+JeWj8mSpGo+0bwgsV+b23ljBFwEM9OmsOv3kM27iUPPm84g==", + "requires": { + "nan": "^2.14.0" + } + }, + "prettier": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..5105a8e --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "private": true, + "devDependencies": { + "prettier": "^2.0.5" + }, + "dependencies": { + "node-pty": "^0.9.0" + } +} diff --git a/script.bash b/script.bash new file mode 100755 index 0000000..da3e753 --- /dev/null +++ b/script.bash @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +node index.js diff --git a/slow.bash b/slow.bash new file mode 100755 index 0000000..09d23ee --- /dev/null +++ b/slow.bash @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +while true; do + echo $RANDOM + sleep 0.1 +done