From bdd41f961e64edb596c0d2b47998e2532b1d4ce6 Mon Sep 17 00:00:00 2001 From: Tibsfox Date: Thu, 2 Apr 2026 04:06:21 -0700 Subject: [PATCH] fix(install): add error handling on restore and scalability note Address review feedback: wrap writeFileSync in try/catch so restore failures surface a clear error instead of silently losing user files. Add comment noting the naming convention approach for future scaling. Co-Authored-By: Claude Opus 4.6 (1M context) --- bin/install.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/bin/install.js b/bin/install.js index d21b98dfa..ed0d61a7a 100755 --- a/bin/install.js +++ b/bin/install.js @@ -3651,6 +3651,8 @@ function uninstall(isGlobal, runtime = 'claude') { const gsdCommandsDir = path.join(targetDir, 'commands', 'gsd'); if (fs.existsSync(gsdCommandsDir)) { // Preserve user-generated files before wipe (#1423) + // Note: if more user files are added, consider a naming convention (e.g., USER-*.md) + // and preserve all matching files instead of listing each one individually. const devPrefsPath = path.join(gsdCommandsDir, 'dev-preferences.md'); const preservedDevPrefs = fs.existsSync(devPrefsPath) ? fs.readFileSync(devPrefsPath, 'utf-8') : null; @@ -3660,9 +3662,13 @@ function uninstall(isGlobal, runtime = 'claude') { // Restore user-generated files if (preservedDevPrefs) { - fs.mkdirSync(gsdCommandsDir, { recursive: true }); - fs.writeFileSync(devPrefsPath, preservedDevPrefs); - console.log(` ${green}✓${reset} Preserved commands/gsd/dev-preferences.md`); + try { + fs.mkdirSync(gsdCommandsDir, { recursive: true }); + fs.writeFileSync(devPrefsPath, preservedDevPrefs); + console.log(` ${green}✓${reset} Preserved commands/gsd/dev-preferences.md`); + } catch (err) { + console.error(` ${red}✗${reset} Failed to restore dev-preferences.md: ${err.message}`); + } } } } else { @@ -3705,9 +3711,13 @@ function uninstall(isGlobal, runtime = 'claude') { // Restore user-generated files if (preservedProfile) { - fs.mkdirSync(gsdDir, { recursive: true }); - fs.writeFileSync(userProfilePath, preservedProfile); - console.log(` ${green}✓${reset} Preserved get-shit-done/USER-PROFILE.md`); + try { + fs.mkdirSync(gsdDir, { recursive: true }); + fs.writeFileSync(userProfilePath, preservedProfile); + console.log(` ${green}✓${reset} Preserved get-shit-done/USER-PROFILE.md`); + } catch (err) { + console.error(` ${red}✗${reset} Failed to restore USER-PROFILE.md: ${err.message}`); + } } }