Skip to content

install.sh and install.ps1 install lore, star and writ, and take the base, team and personal layers without requiring them #798

Open
4 of 4 issues completed

Description

@David-Noble-at-work

Epic: #453 — release, distribution, and self-install.

Setting up the Windows test machine on 2026-09-04 took a hand-copied binary, self install, three writ repo
lines and a trip back for the clone names. The installers should make a new machine one command.

What install.sh and install.ps1 do today

Download a release archive from GitHub (GH_TOKEN, DEVLORE_VERSION, --prefix), copy writ and lore
into <prefix>/bin, and print what to run next. DEVLORE_TOOLS knows all, writ and lore; star is not
installed at all
, though it is one of the four programs and now ships the base layer's extensions. Nothing
configures a layer. install.ps1 declares no PowerShell version and runs under whatever launched it.

Ruled 2026-09-04

  1. Both installers install lore, star and writ, by fetching the archive and running each program's own
    self install, which is the one installer the suite has: binary, man pages, completions for the shells
    present, default config, star's extensions. The scripts fetch and delegate; they do not re-implement.
  2. The three layers are accepted or prompted, never required. --base, --team, --personal (each a
    working-tree path or a repository URL, the writ repo grammar) register the layer when given. With a
    terminal and a layer not given, the installer asks once, with an empty answer meaning skip; without a
    terminal it skips silently and says what it skipped. This is §10 of the CLI design applied to the
    installer: interactive only when a TTY is present, one question at a time, unattended runs on what was
    given.
  3. PowerShell: Core. The body is #Requires -Version 7, one code path, cross-platform. The one thing
    Windows PowerShell 5.1 must be able to run is a preamble that installs pwsh (winget install Microsoft.PowerShell) and re-launches the script under it, because 5.1 is what a fresh Windows machine
    has and pwsh is not. Nothing else targets 5.1.

Acceptance

  • one command on a fresh macOS, Linux or Windows machine installs lore, star and writ through their self install
  • --base/--team/--personal register layers; a TTY prompts once each for the ones not given, empty skips; no TTY skips and says so
  • install.ps1 runs under pwsh; launched from 5.1 it installs pwsh and re-launches itself
  • the release archive carries star alongside lore and writ, if it does not already
  • the README's install section shows the one command and the three flags

Found setting up DANOBLE-WD11-3. Its own worktree.

Activity

  1. David-Noble-at-work commented on Sep 24, 2026

    @David-Noble-at-work
    ContributorAuthor

    Ruling 3 reversed, 2026-09-24. The installer does not install PowerShell 7 and does not require it. In the owner's words: "I'm not sure we want to install powershell, if it's absent. … I think we install and wait for the shell provider rewrite. That rewrite will make powershell much more of an optional thing. If you want to pick a shell you can, including powershell. I think we use what we know is present on the box: Windows PowerShell 5.1."

    So install.ps1 runs on Windows PowerShell 5.1 and PowerShell 7 alike, one code path, and installs nothing but lore, star and writ. Rulings 1 and 2 stand. Executed as lane 1 of #949, plan in #948.

  2. David-Noble-at-work commented on Sep 27, 2026

    @David-Noble-at-work
    ContributorAuthor

    Ruling 2's prompting half is reversed (2026-09-26). The installers never ask. In the owner's words: "let's go with docker and claude's approach. verbatim. the shell script never prompts. anything interactives belongs to the downloaded binary."

    Ruling 2 had the installer ask, on a terminal, for each layer not given. That is replaced:

    • --base, --team and --personal (-Base, -Team and -Personal in install.ps1), or DEVLORE_BASE, DEVLORE_TEAM and DEVLORE_PERSONAL, register a layer with <prefix>/bin/writ repo set <layer> <loc>, base first.
    • A layer not given is skipped. The summary's last lines name each skipped layer with the writ repo set command that registers it. The run is the same with or without a terminal.
    • Precedent read that day: Docker's get.docker.com, Tailscale's install.sh and Claude Code's install.sh ask nothing; interaction is left to the binary they install.

    The same day's companion rulings on failure: a failed self install or writ repo set ends the script with that command's own error ("the errors are the errors. period. if they fail they fail"). There is no rollback, because every operation is idempotent: running the same command again is the recovery.

    Carried out by #950, lane 11 of #949. Its plan is docs/plans/feature/950-installers-take-base-team-and.md.

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

Metadata

Metadata

Labels

Area:CLICommand-line interfaceEpic:ReleaseDistributionRelease, distribution, and self-installfeatureDeliverable unit within an epic

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions