Skip to content

Add quality-of-life features for bootstrap process #22

@slifty

Description

@slifty

Problem

The bootstrap process lacks several features that would improve the user experience and make it safer/easier to use.

Missing Features

1. Dry-Run Mode

No way to preview what will happen without actually making changes.

Proposed:

./bootstrap.sh --dry-run
  • Show what would be installed/configured
  • List files that would be symlinked
  • Show Brewfile contents
  • Identify which install scripts would run

2. Selective Installation

Can't choose to only install specific topics.

Proposed:

./bootstrap.sh --only git,zsh,python
./bootstrap.sh --skip macos,docker
  • Install only specified topics
  • Useful for testing or partial setups

3. Pre-flight Check

No validation before making system changes.

Proposed:

./bootstrap.sh --check
  • Verify all prerequisites
  • Check for conflicts
  • Validate configuration files
  • Report potential issues

4. Backup Mechanism

No automatic backup before overwriting configurations.

Proposed:

  • Create timestamped backups of files before overwriting
  • Store in ~/.dotfiles/backups/YYYY-MM-DD-HHMMSS/
  • Provide restore script

5. Progress Tracking

Hard to see what's happening during long bootstrap runs.

Proposed:

  • Progress indicators for long operations
  • Clear section headers
  • Summary report at end showing what succeeded/failed

6. Uninstall/Cleanup Script

No way to remove dotfiles cleanly.

Proposed:

./cleanup.sh
  • Remove symlinks
  • Restore backups
  • Optionally remove installed packages

7. Update Script

No way to pull changes and re-apply configurations.

Proposed:

./update.sh
  • Pull latest from git
  • Re-run only changed install scripts
  • Smart detection of what needs updating

Implementation Priority

High Value:

  1. Dry-run mode (helps users understand what will happen)
  2. Pre-flight check (prevents broken states)
  3. Better progress tracking (improves UX)

Medium Value:
4. Backup mechanism (safety net)
5. Selective installation (useful for testing)

Nice to Have:
6. Uninstall script
7. Smart update script

Success Criteria

  • Users can preview changes before applying
  • Clear progress indication during installation
  • Safe to experiment without fear of breaking system

Priority

LOW - Quality-of-life improvements, implement incrementally

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions