Add shell scripts to run without just, fix the issue with bun and tsx failing to exit
All checks were successful
timw4mail/scroll/pipeline/head This commit looks good
All checks were successful
timw4mail/scroll/pipeline/head This commit looks good
This commit is contained in:
parent
1951425508
commit
8c54ceb104
@ -12,7 +12,10 @@ To simplify running, I'm using [Just](https://github.com/casey/just).
|
||||
|
||||
- Bun: `just bun-run [filename]`
|
||||
- Deno: `just deno-run [filename]`
|
||||
- TSX: `just tsx-run [filename`
|
||||
- TSX: `just tsx-run [filename]`
|
||||
|
||||
Alternatively, there are shell scripts for each runtime in the `bin` folder.
|
||||
So you can run the editor by calling `./bin/deno.sh [filename]` without installing Just.
|
||||
|
||||
Deno is generally used for dev tools, but each runtime should be functionally
|
||||
equivalent running the text editor.
|
||||
|
5
bin/bun.sh
Executable file
5
bin/bun.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
PARENT_DIR="$(dirname "$(realpath "$0")")"
|
||||
SCROLL="$(realpath "${PARENT_DIR}/../src/scroll.ts")"
|
||||
bun run "${SCROLL}" "$@"
|
5
bin/deno.sh
Executable file
5
bin/deno.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
PARENT_DIR="$(dirname "$(realpath "$0")")"
|
||||
SCROLL="$(realpath "${PARENT_DIR}/../src/scroll.ts")"
|
||||
deno run --allow-all --deny-hrtime "${SCROLL}" "$@"
|
6
bin/tsx.sh
Executable file
6
bin/tsx.sh
Executable file
@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
PARENT_DIR="$(dirname "$(realpath "$0")")"
|
||||
TSX="$(realpath "${PARENT_DIR}/../node_modules/.bin/tsx")"
|
||||
SCROLL="$(realpath "${PARENT_DIR}/../src/scroll.ts")"
|
||||
"${TSX}" "${SCROLL}" "$@";
|
10
package.json
10
package.json
@ -1,8 +1,10 @@
|
||||
{
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
"bun-types": "^1.0.11",
|
||||
"typescript": "^5.5"
|
||||
"@types/node": "*",
|
||||
"bun-types": "*",
|
||||
"typescript": "^5.5",
|
||||
"tsx": "*"
|
||||
},
|
||||
"scripts": {
|
||||
"bun-check": "bunx tsc",
|
||||
@ -15,8 +17,8 @@
|
||||
"deno-run": "deno run --allow-all --deny-hrtime ./src/scroll.ts",
|
||||
"deno-test": "deno test --allow-all",
|
||||
"tsx-check": "npx tsc",
|
||||
"tsx-run": "npx tsx ./src/scroll.ts",
|
||||
"tsx-test": "npx tsx --test './src/common/all_test.ts'"
|
||||
"tsx-run": "tsx ./src/scroll.ts",
|
||||
"tsx-test": "tsx --test './src/common/all_test.ts'"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
|
@ -419,12 +419,6 @@ export default class Editor {
|
||||
? this.document.row(this.cursor.y).unwrap().cxToRx(this.cursor.x)
|
||||
: 0;
|
||||
|
||||
logDebug('Editor.scroll - start', {
|
||||
cursor: this.cursor,
|
||||
renderX: this.renderX,
|
||||
offset: this.offset,
|
||||
});
|
||||
|
||||
const { y } = this.cursor;
|
||||
const offset = this.offset;
|
||||
const width = this.screen.cols;
|
||||
@ -441,12 +435,6 @@ export default class Editor {
|
||||
} else if (this.renderX >= offset.x + width) {
|
||||
offset.x = this.renderX - width + 1;
|
||||
}
|
||||
|
||||
logDebug('Editor.scroll - end', {
|
||||
cursor: this.cursor,
|
||||
renderX: this.renderX,
|
||||
offset: this.offset,
|
||||
});
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
@ -1,5 +1,10 @@
|
||||
import { readKey } from './fns.ts';
|
||||
import { getRuntime, logError, logWarning, process } from './runtime/mod.ts';
|
||||
import {
|
||||
getRuntime,
|
||||
logError,
|
||||
logWarning,
|
||||
node_process as process,
|
||||
} from './runtime/mod.ts';
|
||||
import Editor from './editor.ts';
|
||||
|
||||
export async function main() {
|
||||
|
@ -1,8 +1,8 @@
|
||||
/**
|
||||
* Functions/Methods that depend on the current runtime to function
|
||||
*/
|
||||
import { logError } from './log.ts';
|
||||
import { process } from './node.ts';
|
||||
import { logError, logWarning } from './log.ts';
|
||||
import { node_path as path, node_process as process } from './node.ts';
|
||||
import { RunTimeType } from './runtime.ts';
|
||||
import { IRuntime, ITestBase } from '../types.ts';
|
||||
|
||||
@ -23,15 +23,24 @@ export function die(s: string | Error): void {
|
||||
* Determine which Typescript runtime we are operating under
|
||||
*/
|
||||
export function runtimeType(): RunTimeType {
|
||||
let runtime = RunTimeType.Tsx;
|
||||
const cmd = path.basename(process.argv[0]);
|
||||
switch (cmd) {
|
||||
case 'deno':
|
||||
return RunTimeType.Deno;
|
||||
|
||||
if ('Deno' in globalThis) {
|
||||
runtime = RunTimeType.Deno;
|
||||
} else if ('Bun' in globalThis) {
|
||||
runtime = RunTimeType.Bun;
|
||||
case 'bun':
|
||||
return RunTimeType.Bun;
|
||||
|
||||
case 'node':
|
||||
return RunTimeType.Tsx;
|
||||
|
||||
default:
|
||||
logWarning('Fallback runtime detection', { cmd });
|
||||
if ('bun' in globalThis) {
|
||||
return RunTimeType.Bun;
|
||||
}
|
||||
return RunTimeType.Tsx;
|
||||
}
|
||||
|
||||
return runtime;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5,3 +5,6 @@ export * from './node.ts';
|
||||
export * from './runtime.ts';
|
||||
export * from './terminal_io.ts';
|
||||
export * from './test_base.ts';
|
||||
|
||||
import { CommonRuntime } from './runtime.ts';
|
||||
export default CommonRuntime;
|
||||
|
@ -1,7 +1,9 @@
|
||||
/**
|
||||
* Re-export of node apis shared by runtimes
|
||||
*/
|
||||
import * as assert from 'node:assert';
|
||||
import * as process from 'node:process';
|
||||
import node_assert from 'node:assert';
|
||||
import node_path from 'node:path';
|
||||
import node_process from 'node:process';
|
||||
import node_tty from 'node:tty';
|
||||
|
||||
export { assert, process };
|
||||
export { node_assert, node_path, node_process, node_tty };
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { process } from './node.ts';
|
||||
import { node_process as process } from './node.ts';
|
||||
import CommonFileIO from './file_io.ts';
|
||||
import CommonTerminalIO from './terminal_io.ts';
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { process } from './node.ts';
|
||||
import { node_process as process } from './node.ts';
|
||||
import { readKey } from '../fns.ts';
|
||||
import { ITerminal, ITerminalSize } from '../types.ts';
|
||||
|
||||
@ -26,6 +26,7 @@ export const CommonTerminalIO: ITerminal = {
|
||||
process.stdin.resume().once(
|
||||
'data',
|
||||
(buffer: Uint8Array) => {
|
||||
process.stdin.pause();
|
||||
resolve(buffer);
|
||||
},
|
||||
);
|
||||
|
@ -13,8 +13,9 @@
|
||||
"skipLibCheck": true,
|
||||
"composite": true,
|
||||
"downlevelIteration": true,
|
||||
"esModuleInterop": false,
|
||||
"allowSyntheticDefaultImports": false
|
||||
"esModuleInterop": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"isolatedModules": true
|
||||
},
|
||||
"exclude": ["src/deno"]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user