From 0762f0772f4ef3b1791b9b7922a14ce996af30d3 Mon Sep 17 00:00:00 2001 From: weishu Date: Thu, 25 Dec 2025 21:47:51 +0800 Subject: [PATCH] refactor: move directory creation before lock file operations. fix #6 --- cli/src/persistence.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cli/src/persistence.ts b/cli/src/persistence.ts index 6032fe55..6e99c369 100644 --- a/cli/src/persistence.ts +++ b/cli/src/persistence.ts @@ -74,6 +74,10 @@ export async function updateSettings( const MAX_LOCK_ATTEMPTS = 50; // Maximum number of attempts (5 seconds total) const STALE_LOCK_TIMEOUT_MS = 10000; // Consider lock stale after 10 seconds + if (!existsSync(configuration.happyHomeDir)) { + await mkdir(configuration.happyHomeDir, { recursive: true }); + } + const lockFile = configuration.settingsFile + '.lock'; const tmpFile = configuration.settingsFile + '.tmp'; let fileHandle; @@ -115,11 +119,6 @@ export async function updateSettings( // Apply update const updated = await updater(current); - // Ensure directory exists - if (!existsSync(configuration.happyHomeDir)) { - await mkdir(configuration.happyHomeDir, { recursive: true }); - } - // Write atomically using rename await writeFile(tmpFile, JSON.stringify(updated, null, 2)); await rename(tmpFile, configuration.settingsFile); // Atomic on POSIX