Repository navigation
install.sh and openRepoShape: a Windows-spelled $OPENREPOSHAPE_BIN_DIR is respelled in install.sh's own lines and refused before its fetch, and the PATH note quotes the directory it prints (#649's two leftovers) #667
Description
Goal: install.sh and the command it runs name the install directory the same way in every line, and the export PATH line they print does what it says for any directory that can be on $PATH.
Filed by lane openRepoShape-5 on Brett Heap's word of 2026-10-16T12:17:02Z ("Lane 5's own leftovers only"), from the two checklist candidates in lane 5's #649 report (the #649 writer's, on fix/649-git-bash-launcher, head d91b3144; the PR is #656). Neither line was on a tracking issue: lane 5 posts both on #461 as checklist lines marked → this issue.
Lands after: #656. It changes openRepoShape's install_commands (the cygpath -u respelling and the refusal at :404-427 of its head, and the PATH note moved to :494-499), and tests/test_openreposhape_command.py. This issue's first line is defined by what #656 makes the command print.
Lines (path:line at main 879d8047, with #656's head d91b3144 where the code is #656's)
- install.sh echoes a Windows-spelled
$OPENREPOSHAPE_BIN_DIRas typed.install.sh:372-373buildstarget="$bin_dir/openRepoShape"from the raw value, and every line that names it saysD:\tools\bin/openRepoShape:install:(:435),preflight:(:449) and the fourdone:lines (:476, :480, :485, :488). After openRepoShape in Git Bash: themachine:row findspython, a drive-letter$OPENREPOSHAPE_REPOis a path, a Windows-spelled$OPENREPOSHAPE_BIN_DIRis respelled or refused, andtests-git-bashruns #598's installer cases (#649) #656, the command's own lines say/d/tools/bin/openRepoShape, and both work in Git Bash. With nocygpath, openRepoShape in Git Bash: themachine:row findspython, a drive-letter$OPENREPOSHAPE_REPOis a path, a Windows-spelled$OPENREPOSHAPE_BIN_DIRis respelled or refused, andtests-git-bashruns #598's installer cases (#649) #656's--installrefuses with exit 2 (:415-427 of its head), and install.sh learns that only after it has fetched the launcher: it dies at :423-425 with "the openRepoShape's --install refused (exit 2)". The symlink check at :365-377 already says it is made "before anything is asked of the network"; this one could be too. Read, not run on Windows (the drive spelling resolves only under Git Bash). Direction: install.sh applies openRepoShape in Git Bash: themachine:row findspython, a drive-letter$OPENREPOSHAPE_REPOis a path, a Windows-spelled$OPENREPOSHAPE_BIN_DIRis respelled or refused, andtests-git-bashruns #598's installer cases (#649) #656's rule where it reads the variable (:372): for a value that starts[A-Za-z]:/or[A-Za-z]:\, spell it withcygpath -u --, or refuse before the symlink check and the fetch, so every line carries the one spelling. The case arm is copied between two files that cannot share code (install.sh is downloaded alone), so pin both with a test that feeds one value through each (a fakecygpath, as openRepoShape in Git Bash: themachine:row findspython, a drive-letter$OPENREPOSHAPE_REPOis a path, a Windows-spelled$OPENREPOSHAPE_BIN_DIRis respelled or refused, andtests-git-bashruns #598's installer cases (#649) #656'stest_a_windows_spelled_bin_dir_is_spelled_the_way_bash_spells_itdoes for the command;tests/test_install_sh.py'sNetis the fixture). - The PATH note is not quoted for every directory.
openRepoShape:456-461(main; :494-499 on openRepoShape in Git Bash: themachine:row findspython, a drive-letter$OPENREPOSHAPE_REPOis a path, a Windows-spelled$OPENREPOSHAPE_BIN_DIRis respelled or refused, andtests-git-bashruns #598's installer cases (#649) #656's head) printsexport PATH="$dir:$PATH"with the directory between double quotes as it is. Probe, with thatcaselifted out anddir=/tmp/a"b$HOME c: it printsexport PATH="/tmp/a"b$HOME c:$PATH", andevalof that line fails withunexpected EOF while looking for matching"``. A directory holding", `$`, a backquote or `` prints a line that does not do what it says, and one holding `:` or a newline cannot be on `$PATH` at all. Direction: keep today's line byte for byte for every directory that needs no quoting (`tests/test_openreposhape_command.py:345` pins `export PATH="/.local/bin:$PATH"`, and README says `export PATH=…`); for the others print the directory quoted for bash (single quotes, `'''` for an apostrophe); and refuse a value holding `:` or a newline before anything is placed, beside openRepoShape in Git Bash: themachine:row findspython, a drive-letter$OPENREPOSHAPE_REPOis a path, a Windows-spelled$OPENREPOSHAPE_BIN_DIRis respelled or refused, andtests-git-bashruns #598's installer cases (#649) #656's early checks in `install_commands`, because no line about `$PATH` could work for it. Tests for each, in `tests/test_openreposhape_command.py`.
Overlaps. Open PRs: #656 (above); #630 (lane 3, README, handbook and the pipx package) changes neither install.sh, openRepoShape nor the two suites against main 879d8047 (measured with git diff origin/main origin/l3-563-docs); #656 and #630 conflict on one line of tests.yml, which this issue does not touch. Lane 5's in-flight branches: fix/649-git-bash-launcher (#656). Lane 4 holds neither line.
Tick both lines on #461 when this closes.
🤖 Generated with Claude Code
Activity
brettheap commentedon Oct 16, 2026
CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-16T12:57:00Z, for #667
Logged in
lanes/log/openRepoShape-5.mdat89d80b6f27a37031a807ba76f7c4c338f9cf9f81.The three reads (lane-collision-protocol Rule 1):
Merge origin/main (2000488) into l3-563-docs
README.md, the handbook and the v1.1.0 notes: lane 2's review of roun…
install.sh and openRepoShape: both refuse a `$OPENREPOSHAPE_BIN_DIR` …