fix(installer): make curl|bash invocation safe + fetch missing bundle #9
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/curl-bash-stdin"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Resumen
Fix de Forgejo Issue #5:
install.shyopenmillascrasheaban conBASH_SOURCE[0]: variable sin asignarcuando se invocaban víacurl ... | bash, rompiendo la UX documentada de instalación en una línea.Aplica la Opción A del issue verbatim (el chequeo de 4 partes sobre
BASH_SOURCE[0]) más el fallback de fetch del bundle que el issue implica: cuandoBUNDLE_DIRestá vacío,cmd_installdescarga el bundle a unmktemp -dy lo usa desde ahí.Cambios (5 ficheros)
workspace/opencode/install.shfetch_bundle_to_tmpdirhelper +cmd_installhead (fetch-on-empty) + hardening del filename allowlistworkspace/opencode/openmillasworkspace/opencode/tests/test_install.shdo_test_install_curl_pipe_stdin(regression test, sin red; usabash <(cat install.sh) --help)CHANGELOG.mdAGENTS.md0.3.1→0.3.2Diff stats
Spec
Diseño documentado en
.internal/specs/fix-curl-bash-stdin.md(gitignored). El spec incluye las 2 correcciones a medio camino que el test suite cazó en vivo:BUNDLE_DIR="${BUNDLE_DIR:-$SCRIPT_DIR}"(no:$SCRIPT_DIR→:"") — el segundo dropeaba el path in-tree y rompía 10 tests existentes.local base="${REMOTE_RAW_BASE}/workspace/opencode"—REMOTE_RAW_BASEapunta a la raíz del repo, no al subdir del bundle.Ambas detectadas por el suite de tests, no por asunción (L-036 aplicado al pie de la letra: la issue es hipótesis, el código es evidencia).
Validación
bash workspace/opencode/deploy.sh --check— verdebash workspace/opencode/tests/test_install.sh— 27/27 PASS (26 existentes + nuevo regression test)bash workspace/opencode/tests/test_internal.sh— ALL PASSbash <(cat workspace/opencode/install.sh) --help(smoke stdin) — exit 0, sinBASH_SOURCE[0]: variable sin asignarbash workspace/opencode/install.sh --yes --no-interaction(smoke in-tree) — exit 0, install completosecurity-auditor— GREEN (tras aplicar los 2 findings: filename allowlist + test cleanup)arch-quality-reviewer— GREENAplicación de L-036
Este fix es el segundo caso de uso del meta-aprendizaje L-036 (issue handling discipline). El spec ya advertía (en la sección "Discrepancy this spec must resolve") de que la Opción A del issue sola no bastaba por culpa del ordering entre
SCRIPT_DIR,sourceyBUNDLE_DIR. La implementación añadió las 2 correcciones; el suite de tests las cazó al vuelo. Sin la disciplina de spec+test-driven, las 2 regresiones habrían llegado a PR.Out of scope (deliberado, documentado en el spec)
cmd_updateself-update path ($REMOTE_RAW_BASE/install.shsin prefijoworkspace/opencode/): bug latente con la misma causa raíz; necesita issue separado.Closes #5