diff --git a/src/ui.ts b/src/ui.ts index 9380317..bdbd062 100644 --- a/src/ui.ts +++ b/src/ui.ts @@ -152,6 +152,9 @@ export async function runWizard( if (!writeResult.success) { s.stop("Failed to write .env file."); + if (writeResult.error) { + console.error(`Error details: ${writeResult.error.message}`); + } cancel("Could not write to .env file."); return; } diff --git a/src/writer.ts b/src/writer.ts index b9f71d9..0afb36d 100644 --- a/src/writer.ts +++ b/src/writer.ts @@ -5,6 +5,7 @@ export interface WriteResult { success: boolean; path: string; keysWritten: number; + error?: Error; } /** @@ -43,7 +44,7 @@ export function appendToEnv( fs.appendFileSync(absolutePath, content); return { success: true, path: absolutePath, keysWritten: entries.length }; } catch (error) { - return { success: false, path: absolutePath, keysWritten: 0 }; + return { success: false, path: absolutePath, keysWritten: 0, error: error as Error }; } } @@ -93,8 +94,8 @@ export function syncExampleFile( try { fs.appendFileSync(absolutePath, content); return { success: true, path: absolutePath, keysWritten: newKeys.length }; - } catch { - return { success: false, path: absolutePath, keysWritten: 0 }; + } catch (error) { + return { success: false, path: absolutePath, keysWritten: 0, error: error as Error }; } } @@ -137,6 +138,6 @@ export function generateTypeDefinitions( fs.writeFileSync(absolutePath, content); return { success: true, path: absolutePath, keysWritten: sortedKeys.length }; } catch (error) { - return { success: false, path: absolutePath, keysWritten: 0 }; + return { success: false, path: absolutePath, keysWritten: 0, error: error as Error }; } } diff --git a/tests/writer.test.ts b/tests/writer.test.ts index 587d5e6..3c91fa2 100644 --- a/tests/writer.test.ts +++ b/tests/writer.test.ts @@ -59,6 +59,17 @@ describe("Writer", () => { expect(result.success).toBe(true); expect(result.keysWritten).toBe(0); }); + + it("should return error when writing fails", () => { + // Create a directory where the file should be to force a write error + // (EISDIR: illegal operation on a directory, open ...) + fs.mkdirSync(path.join(tempDir, ".env")); + + const result = appendToEnv(".env", { KEY: "value" }); + + expect(result.success).toBe(false); + expect(result.error).toBeDefined(); + }); }); describe("syncExampleFile", () => {