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 }