Skip to content

setup-estate-commands.sh: accept pipx's openRepoTools link, as openRepoTools --install will (opensoft/openRepoTools#228) #165

Open

Description

@brettheap

Context. opensoft/openRepoTools is getting a PyPI package, openrepotools: opensoft/openRepoTools#228, milestone v1.1.0. Its first PyPI release will be published from openRepoTools-code after the triad cutover (opensoft/openRepoTools#186).

The clash. At ef0aca5, scripts/setup-estate-commands.sh refuses any symlinked target before it installs anything, and requires a regular file afterwards:

  • check_target_preflight (:383) refuses "$target is a symlink" (:386). It runs for every openRepoTools file (:411), so pipx's openRepoTools link makes the whole estate step refuse.
  • verify_installed (:490) refuses a target that "is not a regular file after install" (:493).

So once pipx owns the command, every later ./setup.sh refuses its estate step. Yet ./setup.sh is the main route for a new workstation in openRepoTools' README.

Asked: treat pipx's own openRepoTools link the way openRepoTools --install will.

  1. Recognise it by path alone. A link counts as pipx's openrepotools link only when it resolves to <venv>/bin/openRepoTools, and that <venv> holds both pipx_metadata.json and the openrepotools/payload/ tree.
    • Resolve it with a bash 3.2 readlink loop, not readlink -f or realpath.
    • Use no JSON parsing and no jq.
    • This is the rule in specs/006-release-pypi/contracts/pipx-link.md, on opensoft/openRepoTools branch 006-release-pypi.
  2. Skip that one target. The preflight skips it and still refuses every other link. The post-install verify skips it too, and the script's count line says so: 16 of 17 placed, 1 left to pipx.
  3. Test it with fake venv layouts, with no real pipx. Cover the layouts of pipx 1.11.1 and 1.17.8 (the versions openRepoShape's release lock pins) and of the current 1.18.3. Include a pipx home path that contains a space, since pipx's macOS default is ~/Library/Application Support/pipx.

The order. On Brett Heap's word of 2026-10-18 (option (c)), openRepoTools' README offers the pipx route only after this lands. Until then it says a workstation uses one route or the other.

Related. openRepoShape's own command has the same shape: check_target_preflight "$shape_bin_dir/openRepoShape" at :399. But openRepoShape's installer refuses pipx's link (opensoft/openRepoShape#563), so that case is out of scope here, unless workBenches wants one rule for both.

Lane: openRepoTools-3

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions