Repository navigation
feat(install): add a famstack command that works from any directory - #137
Merged
Merged
Conversation
The installer's final screen printed `stack up photos` and `stack status`, which no shell could run: the launcher is `./stack` and only works from the checkout. The installer now puts a `famstack` script in Homebrew's `bin` directory that execs the checkout's `./stack`, and the final screen prints `famstack ...`. The name is fixed, so docs, hook messages and support can state it; `[core] name` does not change it. When another `famstack` is already on PATH it is left alone and the screen prints `./stack ...` instead. Running the installer again changes nothing. `stack uninstall` of the checkout's own instance removes the script if it is ours, and only then. The script names the checkout, never the instance: `STACK_DIR` still selects it. Outside any checkout the CLI now falls back to the checkout it runs from, so the command finds its stacklets from any directory.
arthware-dev
force-pushed
the
feat/famstack-command
branch
from
September 24, 2026 21:28
050107a to
9acd62b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Remote install run: green.
script/test remote install feat/famstack-commandon 050107a: 11 passed, including "the printed commands work as typed in a new terminal" (no longer xfail). The final screen printedfamstack up photos,famstack status, and the reset left the Mac pristine.Summary
famstackcommand in Homebrew'sbindirectory: a two-line script that execs this checkout's./stack, sofamstack statusworks from any directory. The final screen printsfamstack ...; when anotherfamstackis already on PATH it is left alone and the screen prints./stack .... Re-running the installer writes nothing../stackis unchanged.stack uninstallremoves the command when it is ours and the instance being uninstalled is the checkout's own; aSTACK_DIRinstance (test run, sandbox) leaves it. The name is fixed, not taken from[core] name.Two changes outside the new module:
find_repo_rootinlib/stack/cli.py: outside any checkout it now falls back to the checkout the CLI runs from. Before, it only walked up from the working directory, sofamstackfrom~failed with "Can't find stack directory". Inside a checkout, and withSTACK_DIRset, nothing changes; the fallback does not select an instance.handle_uninstallreusednameas a loop variable, so the closing line printed "users.toml uninstalled" instead of the product name. The loop variable is nowfilename.Squash merge.