Skip to content

Latest commit

 

History

History
136 lines (98 loc) · 4.39 KB

File metadata and controls

136 lines (98 loc) · 4.39 KB

brew-change

Make informed updates - see what changed in your Homebrew packages

🚀 Quick Start

# Show simple outdated list (like brew outdated)
brew-change

# Show outdated packages with version information
brew-change -v

# Show detailed changelog for specific package
brew-change node

# Show detailed changelogs for all outdated packages in parallel
brew-change -a

# Highlight packages with breaking changes (-b implies -a)
brew-change -b

# Show version information
brew-change --version

# Show help
brew-change --help

🎯 Who This Is For

  • Developers who want to understand package changes before updating
  • DevOps Engineers managing production dependencies
  • Security-Conscious Users checking for vulnerability fixes
  • Power Users who like knowing what's changing in their tools
  • Curious Learners exploring how their tools evolve

✨ Key Features

  • Smart Package Detection: GitHub, npm, third-party taps, hybrid packages, and more
  • Parallel Processing: Handles multiple packages simultaneously (45-50s for 13 packages)
  • Breaking Changes Detection: Automatically highlights packages with breaking changes using -b flag
  • Rich Release Info: Full changelogs, commit history, and helpful links
  • Revision Support: Advanced handling of Homebrew revision numbers
  • Performance Optimized: 75% faster than original with intelligent caching

📦 Installation

Quick Install

# Install directly via Homebrew tap (dependencies included)
brew install shrwnsan/tap/brew-change

# Verify installation
brew-change --version

Dependencies

  • Homebrew: Core package manager
  • jq: JSON parsing and processing
  • curl: HTTP requests with retry logic
  • bash: Version 4.0+ for modern shell features

Platform Support

brew-change works seamlessly across all platforms where Homebrew is available:

Platform Homebrew Path Status
macOS (Intel) /usr/local/bin/brew ✅ Fully supported
macOS (Apple Silicon) /opt/homebrew/bin/brew ✅ Fully supported
Linux /home/linuxbrew/.linuxbrew/bin/brew ✅ Fully supported
WSL (Windows Subsystem for Linux) /home/linuxbrew/.linuxbrew/bin/brew ✅ Fully supported

The script automatically detects the correct library path using brew --prefix, ensuring compatibility across all Homebrew installations.

🎯 Package Types

brew-change intelligently handles different package sources:

  • GitHub packages: Full release notes with commit history
  • npm packages: Registry information with release dates
  • Hybrid packages: npm distribution + GitHub development
  • Third-party taps: Community tap support (charmbracelet, oven-sh/bun)
  • Modern CLI tools: Documentation-repository pattern (alpha)

See detailed package type examples: Package Types DocumentationFull documentation index: All Documentation

🐛 Troubleshooting

"Package not found" errors

brew info package-name    # Check if package exists
brew search package-name  # Search for similar packages

Slow performance

brew-change -a            # Auto-adjusts if system is busy
export BREW_CHANGE_JOBS=2 # Reduce parallel jobs manually

Network timeouts

curl -I https://api.github.com  # Check connectivity

Clear cache

rm -rf ~/.cache/brew-change/*

📈 Recent Updates

  • v1.5.8: Fixed parallel mode - resolved set -e inheritance breaking parallel execution
  • v1.5.7: Fixed cask version display - handle both string and array names in -v flag output
  • v1.5.6: Fixed cask detection - use .name field for proper cask identification
  • v1.5.5: Fixed cask detection - use .token field for Homebrew JSON API v2
  • v1.5.4: Show [not installed] for uninstalled packages

Full changelog: CHANGELOG.md

🔗 Related Projects

  • Homebrew - The missing package manager for macOS
  • jq - Command-line JSON processor
  • GitHub CLI - Official GitHub command-line tool

📄 License

MIT License - see LICENSE file for details.


Looking for more?