Skip to content

setup.zsh sources 8 deprecated scripts silently — users see no warning that deprecated code is running #170

Description

@ooloth

Current state

features/setup/setup.zsh sources eight files from the deprecated/ subdirectory (lines 111, 113–118, and 120: deprecated/homebrew.zsh, deprecated/rust.zsh, deprecated/uv.zsh, deprecated/node.zsh, deprecated/npm.zsh, deprecated/tmux.zsh, deprecated/neovim.zsh, deprecated/symlinks.zsh). None of these sourced steps carry any indication in the terminal output that they are executing deprecated code. A user who runs setup has no way to know that a significant portion of the installation is running older, potentially outdated scripts that the repo has marked for replacement.

The second ideal-state option below is blocked by a gap that isn't visible from reading setup.zsh: nothing calls features/install/tools.bash. It exists and auto-discovers every tools/*/install.bash by find, but setup.zsh never invokes it, so on a fresh machine no tool's install.bash runs at all — the deprecated zsh scripts are the only install path that executes. Replacing the deprecated sources therefore means wiring features/install/tools.bash into setup.zsh, not just deleting source lines. Any future tool that manages its own installation — for example one that clones a second repo — will silently not install on a new laptop until that wiring exists.

Ideal state

  • When setup.zsh runs a step sourced from deprecated/, the terminal output includes a visible indicator (e.g. a ⚠️ [deprecated] prefix line) so the user knows that step is running legacy code.
  • Alternatively, all deprecated steps are replaced with their non-deprecated equivalents and the source "${DOTINSTALL}/deprecated/*.zsh" calls are removed entirely. Taking this path also means setup.zsh calls features/install/tools.bash, so that every tool's install.bash runs on a fresh machine.

Out of scope

  • Rewriting the deprecated scripts themselves (that is separate work).
  • Changes to what the deprecated scripts do.

Starting points

  • features/setup/setup.zsh lines 109–121: the full block of source "${DOTINSTALL}/..." calls, deprecated and current interleaved
  • features/install/tools.bash — the auto-discovering installer that nothing currently calls
  • features/update/tools.bash — the equivalent for updates, which is wired up and shows the pattern to follow

QA plan

  1. Run features/setup/setup.zsh (or review its echo/printf output by inspection).
  2. For each step sourced from deprecated/, expect a clearly labelled terminal line such as ⚠️ [deprecated] Running homebrew.zsh — replace with features/install/....
  3. Confirm no step from deprecated/ runs without this label appearing in the output.
  4. Grep setup.zsh for features/install/tools.bash — expect either a call to it, or a labelled deprecation warning on every step that would otherwise have been its responsibility.

Done when

A user running setup can identify from the terminal output which installation steps are sourced from deprecated scripts, without inspecting the setup.zsh source.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions