Skip to content

feat: installer launches the latest create-pywire-app and says when to restart the shell - #15

Merged
reecelikesramen merged 2 commits into
mainfrom
claude/npx-create-pywire-app-uds4xt
Sep 27, 2026
Merged

reecelikesramen merged 2 commits into
mainfrom
claude/npx-create-pywire-app-uds4xt

Conversation

@reecelikesramen

@reecelikesramen reecelikesramen commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Before: curl -fsSL https://pywire.dev/install | sh ran whatever copy of create-pywire-app uv had cached. If it had just installed uv, it exited without saying that uv wasn't on your PATH yet. Nothing in CI tested it.

After: the script at /install installs uv if it's missing, then launches create-pywire-app@latest. The wizard scaffolds the project and installs pywire into it with uv sync. When the script installed uv itself, it ends with a hint to restart your shell. /install stays the canonical URL.

How: I kept the /dev/tty reattach from #12, so piping the script to sh still gives the wizard its prompts. The script returns the wizard's exit code instead of exec-ing into it, so it can print the hint afterwards. I added tests/install.test.mjs (node:test, fake uv/curl in a sandboxed HOME, covering TTY and no-TTY runs) and an "Installer Tests" CI job. install.ps1 also uses @latest now.

Verified in a container: the tests were red first, then green (7/7). The real script ran with no uv on PATH: it installed uv 0.12.19, ran the wizard, and pywire 0.14.5 ended up in the project's .venv. A piped run on a pty showed the interactive prompts.

Deploy note: this only touches site/ (plus tests and CI), so it reaches prod through the normal landing deploy. No worker change is needed.

🤖 Generated with Claude Code

…-pywire-app

curl -fsSL https://pywire.dev/install.sh | sh is now the canonical command.
/install redirects there so the old one-liner keeps working. The script runs
create-pywire-app@latest (skipping uv's cached copy), which scaffolds the
project and installs pywire into it, keeps the /dev/tty reattach for the
wizard, and tells the user to restart their shell when uv was just installed.
Adds node:test coverage for the script and a CI job to run it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H5Qihrw7gMjEWQvizB8G8q
@reecelikesramen reecelikesramen self-assigned this Sep 27, 2026
/install is the canonical URL the docs already use, so drop the
/install.sh rename and its redirect.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H5Qihrw7gMjEWQvizB8G8q
@reecelikesramen reecelikesramen changed the title feat: serve the installer at /install.sh and launch the latest create-pywire-app feat: installer launches the latest create-pywire-app and says when to restart the shell Sep 27, 2026
@reecelikesramen
reecelikesramen marked this pull request as ready for review September 27, 2026 19:31
@reecelikesramen
reecelikesramen merged commit 6e62d29 into main Sep 27, 2026
4 checks passed
@reecelikesramen
reecelikesramen deleted the claude/npx-create-pywire-app-uds4xt branch September 30, 2026 18:14

This branch was successfully deployed

1 active deployment
preview — 91f0926f Deployed Sep 27, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants