Browse Source

fix(installer): avoid lsp config rewrites

Alvin Unreal 3 months ago
parent
commit
9818fb2ed8
2 changed files with 12 additions and 1 deletions
  1. 11 0
      src/cli/config-io.test.ts
  2. 1 1
      src/cli/config-io.ts

+ 11 - 0
src/cli/config-io.test.ts

@@ -288,6 +288,17 @@ describe('config-io', () => {
     expect(saved.lsp).toBe(false);
   });
 
+  test('enableLspByDefault does not write when lsp exists', () => {
+    const configPath = join(tmpDir, 'opencode', 'opencode.json');
+    paths.ensureConfigDir();
+    writeFileSync(configPath, JSON.stringify({ lsp: false }));
+
+    const result = enableLspByDefault();
+    expect(result.success).toBe(true);
+
+    expect(existsSync(`${configPath}.bak`)).toBe(false);
+  });
+
   test('detectCurrentConfig detects installed status', () => {
     const configPath = join(tmpDir, 'opencode', 'opencode.json');
     const litePath = join(tmpDir, 'opencode', 'oh-my-opencode-slim.json');

+ 1 - 1
src/cli/config-io.ts

@@ -324,9 +324,9 @@ export function enableLspByDefault(): ConfigMergeResult {
 
     if (config.lsp === undefined) {
       config.lsp = true;
+      writeConfig(configPath, config);
     }
 
-    writeConfig(configPath, config);
     return { success: true, configPath };
   } catch (err) {
     return {