From dad182fe12f8d63bd49b6e48ba45f412c3244a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Musil?= Date: Tue, 12 May 2026 09:51:29 +0200 Subject: [PATCH] Add silent config option to suppress stdout output Co-Authored-By: Claude Sonnet 4.6 --- config/default.ts | 2 ++ src/index.ts | 16 ++++++++++------ src/logger.ts | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/config/default.ts b/config/default.ts index 2506bc4..3100fab 100644 --- a/config/default.ts +++ b/config/default.ts @@ -14,6 +14,7 @@ export interface TelegramConfig { export interface Config { days: DayUrls devMode: boolean + silent: boolean overrideTime: string | null telegram: TelegramConfig } @@ -27,6 +28,7 @@ const config: Config = { friday: "", }, devMode: false, + silent: false, overrideTime: null, telegram: { botToken: "", diff --git a/src/index.ts b/src/index.ts index 0b2ada4..e1081bd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -53,26 +53,30 @@ function formatMenu(menu: ParsedMenu): string { return lines.join("\n") } +function log(msg: string): void { + if (!config.silent) console.log(msg) +} + async function tg(text: string): Promise { if (!config.telegram.botToken || !config.telegram.chatId) { console.log(`TG (not configured): ${text}`) return } await sendMessage(config.telegram.botToken, config.telegram.chatId, text) - console.log(`TG sent: ${text.slice(0, 80)}${text.length > 80 ? "…" : ""}`) + log(`TG sent: ${text.slice(0, 80)}${text.length > 80 ? "…" : ""}`) } async function main() { const { totalMinutes, dateStr } = getCurrentTime() if (totalMinutes >= 14 * 60) { - console.log("After 14:00, exiting.") + log("After 14:00, exiting.") return } const weekday = todayWeekday() if (!weekday) { - console.log("Weekend, exiting.") + log("Weekend, exiting.") return } @@ -89,7 +93,7 @@ async function main() { const availability = checkAvailability(body) if (!availability.available) { - console.log(`Menu not available: ${availability.reason}`) + log(`Menu not available: ${availability.reason}`) if (isAfter10 && !state.sentAt10) { await tg("Dnes menu není k dispozici.") state.sentAt10 = true @@ -109,7 +113,7 @@ async function main() { state.sentAt10 = true } await saveState(state) - console.log("First run, reference saved.") + log("First run, reference saved.") return } @@ -119,7 +123,7 @@ async function main() { // Log text changes (always) for (const change of diff.textChanges) { - await logChange(dateStr, formatTextChange(change)) + await logChange(dateStr, formatTextChange(change), config.silent) } if (isAfter10) { diff --git a/src/logger.ts b/src/logger.ts index 9bbb6e3..11a8e41 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -3,10 +3,10 @@ import path from "path" const LOGS_DIR = "logs" -export async function logChange(date: string, message: string): Promise { +export async function logChange(date: string, message: string, silent = false): Promise { await fs.mkdir(LOGS_DIR, { recursive: true }) const file = path.join(LOGS_DIR, `${date}.log`) const time = new Date().toTimeString().slice(0, 8) await fs.appendFile(file, `[${time}] ${message}\n`) - console.log(`LOG: ${message}`) + if (!silent) console.log(`LOG: ${message}`) }