From b5bc06e722b739e02dc95df17cfc05d236033e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=BE=D0=B4=D0=B8=D0=BD=20=D0=A0=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD?= Date: Sat, 26 Sep 2026 00:30:23 +0300 Subject: [PATCH] fix: call setLogDir() before loadConfig() so all logs go to storagePath MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit loadConfig() вызывал log() до setLogDir() — писался в /tmp. Теперь setLogDir() вызывается в v2Setup() до loadConfig(). --- index.ts | 23 +++++++++-------------- logger.ts | 8 ++------ 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/index.ts b/index.ts index 21284b6..56b0172 100644 --- a/index.ts +++ b/index.ts @@ -10,11 +10,6 @@ import { setLogDir, log } from "./logger.js" // Plugin data directory — uses the same default as matrix-client // ============================================================================= -function getPluginDataDir(options: any): string { - const storagePath = options.storagePath || path.join(os.homedir(), ".local", "share", "opencode-matrix-bot") - return path.join(storagePath, "plugin-data") -} - function ensureDataDir(dir: string): void { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }) @@ -65,13 +60,11 @@ function releaseLock(): void { // Plugin Setup // ============================================================================= -async function runPlugin(ctx: any, options: any) { - const dataDir = getPluginDataDir(options) +async function runPlugin(ctx: any, options: any, dataDir: string) { ensureDataDir(dataDir) LOCK_FILE = `${dataDir}/lock` const SETUP_STARTED_LOG = `${dataDir}/setup-started.log` const SETUP_ERROR_LOG = `${dataDir}/setup-error.log` - setLogDir(dataDir) log("Plugin module loaded") // Acquire global lock — only one instance (server or client) starts the bot @@ -300,15 +293,17 @@ async function runPlugin(ctx: any, options: any) { // ============================================================================= async function v2Setup(ctx: any) { + const rawStorage = (ctx.options as any)?.storagePath + const dataDir = rawStorage + ? path.join(rawStorage, "plugin-data") + : path.join(os.homedir(), ".local", "share", "opencode-matrix-bot", "plugin-data") + ensureDataDir(dataDir) + setLogDir(dataDir) + try { const { options } = await loadConfig(ctx.options) - return await runPlugin(ctx, options) + return await runPlugin(ctx, options, dataDir) } catch (err) { - const rawStorage = (ctx.options as any)?.storagePath - const dataDir = rawStorage - ? path.join(rawStorage, "plugin-data") - : path.join(os.homedir(), ".local", "share", "opencode-matrix-bot", "plugin-data") - ensureDataDir(dataDir) fs.appendFileSync(`${dataDir}/setup-error.log`, `[${new Date().toISOString()}] ${String(err)}\n`) log(`V2 setup error: ${String(err)}`) return () => {} diff --git a/logger.ts b/logger.ts index 0c4690f..293d42b 100644 --- a/logger.ts +++ b/logger.ts @@ -1,5 +1,4 @@ import fs from "fs" -import os from "os" import path from "path" let LOG_DIR = "/tmp/opencode-matrix-plugin" @@ -12,14 +11,11 @@ export function setLogDir(dir: string): void { export function log(message: string): void { try { - const timestamp = new Date().toISOString() - const line = `[${timestamp}] ${message}\n` fs.mkdirSync(LOG_DIR, { recursive: true }) - fs.appendFileSync(LOG_FILE, line) + fs.appendFileSync(LOG_FILE, `[${new Date().toISOString()}] ${message}\n`) } catch (e) { try { - const timestamp = new Date().toISOString() - fs.appendFileSync("/tmp/opencode-matrix-fallback.log", `[${timestamp}] ${message}\n`) + fs.appendFileSync("/tmp/opencode-matrix-fallback.log", `[${new Date().toISOString()}] ${message}\n`) } catch { // silent fallback }