Something went wrong. Try again.
A rewrite of the Plan 9 rc shell in Goose for UNIX-like systems and with structured CLI args
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233import assert from 'node:assert/strict';import { mkdtempSync, writeFileSync, existsSync, rmSync } from 'node:fs';import { tmpdir } from 'node:os';import { join, resolve } from 'node:path';import { Terminal } from './terminal.mjs';
const directory = mkdtempSync(join(tmpdir(), 'rc2-automatic-'));const marker = join(directory, 'executed');const script = join(directory, 'demo.rc');const shell = resolve(process.argv[2] || 'rc2');writeFileSync(script, `#!/usr/bin/env rc2\n/bin/touch '${marker}'\nargs {\n flag verbose -v --verbose\n option mode -m --mode (fast safe)\n positional transport (ship train)\n}\necho $mode\n`, { mode: 0o700 });const terminal = new Terminal(shell);try { await terminal.expect('% '); terminal.send(`${script} -vmfa\t`); await terminal.expect('-vmfast '); terminal.send('\x03'); await terminal.expect('^C\r\n% '); terminal.send(`${script} -- tr\t`); await terminal.expect('-- train '); terminal.send('\x03'); await terminal.expect('^C\r\n% '); terminal.send(`rc2 ${script} --mode=sa\t`); await terminal.expect("'--mode=safe' "); terminal.send('\x03'); await terminal.expect('^C\r\n% '); assert.equal(existsSync(marker), false, 'Completion executed the target script');} finally { await terminal.close(); rmSync(directory, { recursive: true, force: true });}console.log('Automatic completion tests passed');