From 7f0498fc846ca1838a906fc8da0a49ce2037a637 Mon Sep 17 00:00:00 2001 From: mitchell Date: Mon, 4 May 2026 22:02:07 -0400 Subject: [PATCH] fix: improve config loading flow and table column width --- index.ts | 8 ++++---- src/config/index.ts | 19 +++++++++++++------ src/render/markdown.ts | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/index.ts b/index.ts index 91a8ffd..4a88d6f 100644 --- a/index.ts +++ b/index.ts @@ -30,15 +30,15 @@ async function main() { const modelFlag = args.model ?? args.m; const configFlag = args.config ?? args.c; - const config = await loadConfig(); + const config = await loadConfig(configFlag); - const model = modelFlag ?? config.model; - - if (configFlag) { + if (configFlag || !config) { await initConfig(config); return; } + const model = modelFlag ?? config.model; + const renderer = new Renderer(plainOut, plainErr); const provider = createOpenAICompatible({ diff --git a/src/config/index.ts b/src/config/index.ts index 40664c9..7b7193c 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -10,13 +10,14 @@ export interface AppConfig { model: string; } -export async function initConfig(old?: AppConfig): Promise { +export async function initConfig(old: AppConfig | null): Promise { + console.log(); intro(chalk.blue("Welcome to LMC. Let's make a new config!")); + const baseURL = await text({ message: "What's your base URL:", - initialValue: old?.baseURL, - defaultValue: "http://127.0.0.1:8080/v1", - placeholder: "http://127.0.0.1:8080/v1", + defaultValue: old?.baseURL ?? "http://127.0.0.1:8080/v1", + placeholder: old?.baseURL ?? "http://127.0.0.1:8080/v1", }); if (isCancel(baseURL)) process.exit(1); @@ -32,6 +33,7 @@ export async function initConfig(old?: AppConfig): Promise { const config = { baseURL, model } satisfies AppConfig; await configFile.write(JSON.stringify(config, null, " ")); + outro(chalk.green("Configuration saved!")); return config; @@ -52,12 +54,17 @@ async function getModels(url: string) { return models.data.map((model) => ({ value: model.id })); } -export async function loadConfig(): Promise { +export async function loadConfig( + configFlag: boolean | undefined, +): Promise { let config: AppConfig; try { config = await configFile.json(); } catch { - config = await initConfig(); + if (configFlag) return null; + console.error(`Config not found at ${configFile.name}`); + return null; } + return config; } diff --git a/src/render/markdown.ts b/src/render/markdown.ts index 701f9ea..565193b 100644 --- a/src/render/markdown.ts +++ b/src/render/markdown.ts @@ -110,7 +110,7 @@ export async function renderMarkdown( .header(header) .body(body) .border() - .maxColWidth(Math.floor(columns / header.length) - 3) + .maxColWidth(Math.floor(columns / header.length) - header.length) .toString(); header = []; body = [];