fix(brain-install): remove dead-branch mapping; add catch-all to filter case

Two code-quality fixes after review of dc71e23 (Task 1):

I1 — Dead-branch logic in install.sh:
The plugin-install block sits inside the `elif [ "$mode" = "user" ]` branch,
so `[ "$mode" = "project" ] && plugin_target="consumer"` is unreachable
(`$mode` is always "user" here). Replaced with hardcoded `--install-target=user`
plus clarifying comment about future consumer-mode wiring.

I2 — Filter case missing catch-all in install-plugins.sh:
The two `case "$install_target"` blocks (validation at lines 40-43, filter at
lines 75-82) were physically separate. If a future enum value is added to
validation without updating filter, $filter would be unset → set -u crash.
Added explicit `*)` catch-all with log_error + exit 1.

Plan §Task 1 Step 1.7 contained the same I1 bug as dc71e23 — implementer
followed plan faithfully. This fix corrects the code; plan stays as historical
record. Future plans referencing this pattern should match THIS fix, not the
original plan text.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-11 15:07:29 +03:00
parent dc71e2338e
commit ccad7e7b29
2 changed files with 9 additions and 4 deletions
+5 -4
View File
@@ -144,13 +144,14 @@ elif [ "$mode" = "user" ]; then
# Plugins
if [ "$with_plugins" = "yes" ]; then
if [ -f "$src/marketplaces.json" ] && [ -f "$src/plugins-manifest.json" ]; then
# Map mode (user|project) to install-target (user|consumer)
plugin_target="user"
[ "$mode" = "project" ] && plugin_target="consumer"
# NOTE: this plugin-install block currently only runs in user mode
# (it sits inside `elif [ "$mode" = "user" ]` above). Future consumer-mode
# plugin install would need a separate block in the `if [ "$mode" = "project" ]`
# branch above, passing --install-target=consumer.
bash "$SCRIPT_DIR/lib/install-plugins.sh" \
--marketplaces="$src/marketplaces.json" \
--manifest="$src/plugins-manifest.json" \
--install-target="$plugin_target" || exit 6
--install-target=user || exit 6
fi
fi
fi
+4
View File
@@ -79,6 +79,10 @@ case "$install_target" in
consumer)
filter='.plugins | to_entries[] | select(.value[0].target == "consumer" or .value[0].target == "user-level+consumer") | .key'
;;
*)
log_error "internal: unhandled install_target=$install_target (should have been validated above)"
exit 1
;;
esac
for plugin in $(jq -r "$filter" "$manifest"); do