From 0685d712990b732a33069996257d05deab5293c7 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Thu, 24 Apr 2025 18:08:09 +0800 Subject: [PATCH] refactor: remove print.js and simplify response handling in cli.js --- packages/container/cli.js | 26 +------- packages/container/print.js | 115 ------------------------------------ 2 files changed, 1 insertion(+), 140 deletions(-) delete mode 100644 packages/container/print.js diff --git a/packages/container/cli.js b/packages/container/cli.js index e8397b5..3f303af 100644 --- a/packages/container/cli.js +++ b/packages/container/cli.js @@ -3,7 +3,6 @@ const fs = require('fs').promises const { exit } = require('process') const minimist = require('minimist') const axios = require('axios') -const { colorize, printResponses, printHints } = require('./print.js') const discoverFiles = require('./discover.js') const { @@ -46,19 +45,6 @@ async function handleCommand(command) { }, {}) } -async function handleResponse({ responses, hints, end }) { - if (responses) { - await printResponses(responses, 90) - } - if (hints) { - await printHints(hints, 90) - } - if (end) { - console.log(colorize('Quest completed!', 'blue')) - } - await api.post('/commands/completed') -} - async function main() { if (!CMD_NAME) exit(0) @@ -74,17 +60,7 @@ async function main() { pwd: PWD, params, } - try { - const res = await api.post('/commands', payload) - if (!res.data || !res.data.responses) return - await handleResponse(res.data) - } catch (err) { - if (err.response) { - console.error(err.response.data) - return - } - console.error(err.message) - } + await api.post('/commands', payload) } main() diff --git a/packages/container/print.js b/packages/container/print.js deleted file mode 100644 index 8f3eee3..0000000 --- a/packages/container/print.js +++ /dev/null @@ -1,115 +0,0 @@ -/* eslint-disable no-restricted-syntax */ -/* eslint-disable no-await-in-loop */ -const readline = require('readline') - -const RETURN_SYMBOL = '\u21B5' - -// ANSI color map -const ANSI_COLORS = { - default: 0, - black: 30, - red: 31, - green: 32, - yellow: 33, - blue: 34, - magenta: 35, - cyan: 36, - white: 37, -} - -function colorCode(color) { - return `\x1b[${ANSI_COLORS[color]}m` -} - -function colorize(content, color) { - if (!color) return content - return `${colorCode(color)}${content}${colorCode('default')}` -} - -process.stdin.setRawMode(true) - -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - terminal: false, -}) - -function waitForEnter() { - return new Promise((resolve) => { - rl.once('line', resolve) - }) -} - -function formatLine(content, color) { - let result = colorCode(color) - let codeBlock = false - for (const c of content) { - switch (c) { - case '`': - result += colorCode(codeBlock ? color : 'green') - codeBlock = !codeBlock - break - - default: - result += c - } - } - return result + colorCode('default') + RETURN_SYMBOL -} - -function printLine(content, delay, color) { - const printContent = formatLine(content, color) - return new Promise((resolve) => { - let i = 0 - const timer = setInterval(() => { - process.stdout.write(printContent[i]) - i += 1 - if (i >= printContent.length) { - clearInterval(timer) - process.stdout.write('\n') - resolve() - } - }, delay) - - waitForEnter().then(() => { - clearInterval(timer) - if (i >= printContent.length) return - process.stdout.write(printContent.slice(i)) - process.stdout.write('\n') - resolve() - }) - }) -} - -async function printResponses(responses, delay = 100) { - console.log() - console.log(colorize('==============================', 'green')) - for (const response of responses) { - const { type, content, speaker, color } = response - if (type === 'narrative') { - for (const line of content) { - await printLine(line, delay, color || 'cyan') - } - } - if (type === 'dialogue') { - console.log(colorize(`${speaker}:`, 'green')) - for (const line of content) { - await printLine(` ${line}`, delay, color || 'cyan') - } - } - console.log(colorize('------------------------------', 'green')) - console.log() - } -} - -async function printHints(hints, delay = 100) { - for (const hint of hints) { - await printLine(hint, delay, 'yellow') - } -} - -module.exports = { - printResponses, - printHints, - colorize, -}