You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
setup-estate-commands.sh: accept pipx's openRepoTools link, as openRepoTools --install will (opensoft/openRepoTools#228) #165
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).
A workstation may then run pipx install openrepotools. That places ~/.local/bin/openRepoTools as a symlink into pipx's venv.
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.
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.
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.
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.
Activity
The workBenches condition is decided: Brett Heap's position (c), open…
PR 4 review: the assembly README cap holds 510, README's text is test…
openRepoTools becomes the openrepotools package: pipx installs the wh…
The record tells the truth about releases: the v1.0.0 notes are in th…