fix: auto-update never bootstraps missing tools; detect pip via pip3#100
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
There was a problem hiding this comment.
Code Review
This pull request updates the pip catalog configuration to include alternative binary candidates and refactors the guide.sh script to ensure that the auto-update process only upgrades already installed tools instead of bootstrapping missing ones. Uninstalled tools are now skipped silently during auto-update, and the unused SUMMARY_INSTALLED counter has been removed. There are no review comments, and I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #100 +/- ##
==========================================
- Coverage 69.88% 69.82% -0.06%
==========================================
Files 22 22
Lines 3347 3347
==========================================
- Hits 2339 2337 -2
- Misses 1008 1010 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
This PR fixes an unintended behavior in the interactive upgrade guide where auto-update could bootstrap missing tools (notably pip) and also improves pip detection on systems that only expose pip3. This aligns make upgrade with “upgrade existing tools only” semantics while ensuring pip isn’t falsely flagged as absent.
Changes:
- Prevent auto-update in
scripts/guide.shfrom installing tools that are not already installed (skip instead of bootstrap). - Simplify/clarify auto-update command construction by defaulting to
install_tool.sh <tool> updatewhen applicable and removing the unused “Installed” summary counter. - Improve
pipdetection by addingpip3as an executable candidate incatalog/pip.json.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| scripts/guide.sh | Guards auto-update to only run for already-installed tools; removes now-unused install summary counter. |
| catalog/pip.json | Adds pip3 as a candidate executable so pip can be detected when only pip3 exists. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…issing ones The interactive upgrade guide treated auto_update=true as "install or upgrade", so a tool that was not installed (e.g. pip) was freshly installed on our behalf. Guard the auto-update path on install state: skip uninstalled tools and leave deliberate installs to the interactive prompt, deferring package acquisition to uv/bun. Drop the now-unreachable fresh-install branch and the SUMMARY_INSTALLED counter it fed (interactive installs already count as Updated). Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
Systems commonly expose only pip3, not a bare pip. Add pip3 to the detection candidates (mirroring fd/fdfind) so an existing pip is recognized and kept current by auto-update instead of being reported as not installed. Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
f8aa845 to
53acb7e
Compare
|



Problem
Running
make upgrade(the interactive guide) silently installed pip,even though pip showed as
not installed. Two independent causes:Auto-update bootstrapped missing tools. The global
auto_upgradedefault is
true, so every tool without an explicit per-tool setting isauto-update-eligible. The guide treated
auto_update=trueas install orupgrade, so an absent tool (pip) was freshly installed rather than skipped.
pip was misdetected as absent. The catalog only searched for a bare
pipbinary; systems that expose onlypip3reported pip as not installed,which is what triggered the bootstrap in the first place.
Changes
scripts/guide.sh— the auto-update path now guards on install state:if a tool is not installed it is skipped ("upgrades existing tools only"),
never bootstrapped. Package acquisition stays with uv/bun. Removed the
now-unreachable fresh-install branch and the
SUMMARY_INSTALLEDcounter itwas the sole feeder of (interactive installs already count as
Updated).catalog/pip.json— added"candidates": ["pip", "pip3"](mirroringfd/fdfind) so an existing pip is detected and kept current byauto-update.
Net behavior
pip3)Verification
pytest: 634 passed, 1 skipped.E9,F63,F7,F82) clean; smoke test passes;audit.py --helpOK.bash -n scripts/guide.shclean; added shell lines are shellcheck-clean.pip3(no barepip) on PATH + live audit →pip 25.3 -> 26.1.2(was
not installedbefore the catalog change).test_guide_multi_install.sh: the only 3 failures are pre-existing onunmodified
main(nvm classification / single-install warning); no regression.No version bump or CHANGELOG (feature-branch policy).