Loading repository data…
Loading repository data…
shrimpy8 / repository
Safe, interactive package manager updater for macOS developers. Manages Homebrew, Conda, Python (auto-detects source), and npm with smart version control, rollback snapshots, and detailed logging. Patch updates auto-approved, major changes require confirmation.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
An interactive Python script that safely manages upgrades for Homebrew, Conda, Python, and npm with logging and rollback capability.
Script Name: safe_update.py - Emphasizing safe, controlled upgrades for your development environment.
Interactive menu with rich UI showing upgrade options and system status
~/upgrade-logs/ for rollbackrich library if available)| Upgrade Type | Behavior | Example |
|---|---|---|
| Patch (x.x.Z) | ✅ Auto-upgrade | 3.12.11 → 3.12.12 |
| Minor (x.Y.x) | ⚠️ Requires confirmation | npm 10.x → 11.x |
| Major (X.x.x) | 🛑 Requires manual review | Python 3.12 → 3.13 |
The script uses Python's standard library, but for the best experience, install rich:
pip install rich
python safe_update.py
# or
./safe_update.py
brew cleanup after upgradesconda clean --all after upgradesconda update pythonbrew upgrade python@3npm cache verify after upgradesAll logs and snapshots are saved to ~/upgrade-logs/:
~/upgrade-logs/
├── upgrade_20250605_143022.log # Detailed execution log
├── snapshot_20250605_143022.json # Pre-upgrade system state
├── upgrade_20250605_151533.log
└── snapshot_20250605_151533.json
{
"homebrew": {
"version": "4.2.10",
"outdated_count": 2,
"outdated_packages": [...]
},
"conda": {
"current": "25.9.1",
"latest": "25.9.1"
},
"python": {
"current": "3.12.12",
"latest": "3.12.12"
},
"npm": {
"current": "11.6.2",
"latest": "11.6.2",
"outdated_count": 0,
"outdated_packages": []
}
}
If you need to rollback to a previous version:
cat ~/upgrade-logs/snapshot_<timestamp>.json# Homebrew
brew install <package>@<version>
# Conda
conda install conda=<version>
# Python
conda install python=<version>
# npm
npm install -g npm@<version>
npm install -g <package>@<version>
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Welcome ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
System Upgrade Manager
Log file: ~/upgrade-logs/upgrade_20250605_143022.log
Snapshot: ~/upgrade-logs/snapshot_20250605_143022.json
This tool will help you safely upgrade your system packages.
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Main Menu ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
System Upgrade Manager
1. Upgrade Homebrew
2. Upgrade Conda
3. Upgrade Python
4. Upgrade npm
5. Check All (no upgrades)
6. Upgrade All
0. Exit
Select option [0/1/2/3/4/5/6]: 5
Checking Homebrew...
✓ All Homebrew packages up to date
Checking Conda...
✓ Conda 25.9.1 (up to date)
Checking Python...
✓ Python 3.12.12 (up to date)
Checking npm...
npm: 11.6.2 → Latest: 11.6.2
✓ All global npm packages up to date
✓ Snapshot saved to: ~/upgrade-logs/snapshot_20250605_143022.json
~/upgrade-logs/ after major upgradesInstall with: pip install rich
The script will work without it but with plain text output.
Make sure you're running safe_update.py (not the old system_upgrade.py name).
If Conda dependencies conflict, try:
conda update -n base -c defaults conda --force-reinstall
Fix with: sudo chown -R $(whoami) $(brew --prefix)/*
Fix with: sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
rich library for enhanced UI (pip install -r requirements.txt)requirements.txt with version constraintsrich library for UI (optional)Free to use and modify.