- Issue:
bootstrap.shuses relative paths (./install/...) but scripts use absolute paths (${HOME}/Projects/dotfiles/...) - Problem: Scripts will fail if not run from the correct directory
- Location:
bootstrap.sh, all install scripts - Fix: Use
SCRIPT_DIRvariable to determine script location dynamically - Status: ✅ Fixed - All scripts now use
DOTFILES_DIRvariable derived from script location. Scripts work regardless of where the repo is cloned or from which directory they're executed.
- Issue:
install/brew.shline 13 uses~/Projects/dotfiles/applications/brew/Brewfilewith tilde - Problem: Tilde expansion doesn't work in quoted strings, will fail
- Location:
install/brew.sh:13 - Fix: Use
${HOME}or unquoted path, or better yet, useSCRIPT_DIR - Status: ✅ Fixed - Now uses
$DOTFILES_DIR/applications/brew/Brewfile(line 17)
- Issue: No check if Homebrew is already installed before attempting installation
- Problem: Will fail or prompt unnecessarily if Homebrew exists
- Location:
install/brew-install.sh - Fix: Check
command -v brewbefore installing
- Issue:
- Uses deprecated
masterbranch (should bemain) - No check if already installed
- Will overwrite existing
.zshrcwithout backup
- Uses deprecated
- Location:
install/oh-my-zsh.sh - Fix: Check for existing installation, use
mainbranch, handle existing.zshrc
- Issue:
.zshrcreferences tools not in Brewfile:fzf(line 84)bun(lines 90, 93-94)volta(line 104)
- Problem: Scripts will fail if these aren't installed
- Location:
dotfiles/.zshrc - Fix: Add to Brewfile or add conditional checks
- Issue:
.zshrccontains hardcoded user-specific paths:- Line 90:
/Users/anton.efimov/.bun/_bun - Line 104:
/Users/anton.efimov/.volta/bin
- Line 90:
- Problem: Won't work for other users
- Location:
dotfiles/.zshrc - Fix: Use
${HOME}variable
- Issue:
.zshrcdoesn't source oh-my-zsh configuration - Problem: Oh-my-zsh won't be initialized
- Location:
dotfiles/.zshrc - Fix: Add
source $ZSH/oh-my-zsh.shor proper oh-my-zsh initialization
- Issue:
dotfiles.shuses${files[@]}without proper quoting - Problem: Will fail with filenames containing spaces
- Location:
install/dotfiles.sh:20 - Fix: Use proper array iteration:
for file in "${files[@]}"
- Issue: No checks if directories exist before operations
- Problem: Scripts will fail with unclear errors
- Location: All install scripts
- Fix: Add directory existence checks
- Issue: Uses deprecated
masterbranch in URL - Problem: May break if GitHub removes master branch
- Location:
install/brew-install.sh:9 - Fix: Use
HEADormainbranch
- Issue: Multiple logic errors in
.vscodepreference script:- Lines 30-31, 39-40, 47-48, 57-58, 68-69: Creates symlink even if source doesn't exist
- Line 62: Uses hardcoded path with tilde (
~/Projects/...) - Line 64: Typo "porjects" instead of "projects"
- No check if VS Code User directory exists before symlinking
- Problem: Script will fail or create broken symlinks
- Location:
install/preferences/.vscode - Fix: Fix conditional logic, use
${HOME}, create directory if needed, fix typo
- Issue: Line 10 uses wildcard in variable assignment:
source=$HOME/Projects/dotfiles/applications/karabiner/* - Problem: Wildcard won't expand in variable assignment, will fail
- Location:
install/preferences/.karabiner:10 - Fix: Use proper directory path or loop through files
- Issue: No validation that script is running on macOS
- Problem: Could accidentally run on wrong OS
- Fix: Add
[[ "$OSTYPE" == "darwin"* ]]check
- Issue: Scripts use
set -o errexitbut missing:set -o pipefail(catch errors in pipes)set -o nounset(catch unset variables)
- Location: All install scripts
- Fix: Add both flags
- Issue: Scripts can't be safely run multiple times
- Problem: May create duplicate symlinks, reinstall packages, etc.
- Fix: Add checks before operations (e.g., check if symlink exists)
- Issue:
install/preferences/has files butapplications.shlooks for dotfiles (.filename) - Problem: Preference scripts won't be sourced
- Location:
install/applications.sh - Fix: Align file naming or fix the find command
- Issue: Some operations overwrite files without backup
- Problem: Data loss risk
- Location: Various scripts (especially preference scripts)
- Fix: Always backup before overwriting
- Issue: Preference scripts don't create target directories if they don't exist
- Problem: Symlink creation will fail (e.g., VS Code User directory, Karabiner config directory)
- Location: All preference scripts
- Fix: Add
mkdir -pbefore symlinking
- Issue:
.zshrctries to add all SSH keys without checking if they're already added - Problem: May cause errors or duplicate key entries
- Location:
dotfiles/.zshrc:29-33 - Fix: Check if key is already loaded before adding
- Issue: README mentions git but no check in scripts
- Problem: Scripts may fail if git isn't installed
- Fix: Add git check or install Xcode command line tools
- Issue: No log file for troubleshooting failed installations
- Problem: Hard to debug issues
- Fix: Add logging to file
- Gap: Can't preview what will happen without executing
- Suggestion: Add
--dry-runflag
- Gap: Can't undo changes if something goes wrong
- Suggestion: Create backup manifest and restore script
- Gap: No way to verify installation was successful
- Suggestion: Add validation script that checks all components
- Gap: README mentions update but no automated way
- Suggestion: Add
update.shscript
- Gap: No macOS system preferences configuration
- Suggestion: Add
defaults writecommands for common macOS settings
- Gap: Assumes Xcode CLI tools are installed
- Suggestion: Add check and installation
- Gap: Assumes bash is available
- Suggestion: Check shell compatibility
- Gap: Some apps have configs but no installation/symlink script:
- Karabiner configs exist but no installation
- Raycast config exists but no installation
- VS Code settings exist but no installation
- Suggestion: Add installation steps for all app configs
- Gap: No script to verify all symlinks are valid
- Suggestion: Add health check script
- Suggestion: Create a common function to get script directory:
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- Suggestion: Show progress for long-running operations (brew install)
- Suggestion: Use colors for success/error messages
- Suggestion: Ask before destructive operations (like
dotfiles.shdoes)
- Suggestion: Consider pinning versions in Brewfile for reproducibility
- Suggestion: Move user-specific paths to a separate file that's gitignored
- Suggestion: Add GitHub Actions to test scripts on macOS
- Suggestion:
- Document what each script does
- Add troubleshooting section
- Document prerequisites
- Suggestion: Make scripts more modular, allow selective installation
- Suggestion: Starship config exists but no installation script
- Suggestion:
dotfiles.shshould handle case where symlink already points to correct location
- Suggestion: For network operations (brew, git clones), add retry logic
- Suggestion: Verify sufficient disk space before installation
- ✅ Fix path handling (issues #1, #2) - COMPLETED
- Add prerequisite checks (#3, #17)
- Fix hardcoded paths (#6)
- Add missing dependencies (#5)
- Fix array expansion (#8)
- Add oh-my-zsh source (#7)
- Fix VS Code script logic errors (#10a)
- Fix Karabiner wildcard bug (#10b)
- Add directory creation checks (#15a)
- Add error handling (#9, #12)
- Fix oh-my-zsh installation (#4)
- Add macOS check (#11)
- Fix preferences directory issue (#14)
- Add idempotency (#13)
- Add logging (#18)
- Add dry-run mode (#19)
- Add validation script (#21)
- Add system preferences (#23)
- Improve documentation (#35)
- Test on fresh macOS installation
- Test with existing Homebrew installation
- Test with existing oh-my-zsh installation
- Test with existing dotfiles
- Test with different user names
- Test with spaces in paths
- Test interruption and resume
- Test on different macOS versions