Skip to content

feat(install): support arbitrary GitHub repos, refs, and renames - #42

Merged
melvincarvalho merged 1 commit into
gh-pagesfrom
issue-25-arbitrary-repos
May 17, 2026
Merged

feat(install): support arbitrary GitHub repos, refs, and renames#42
melvincarvalho merged 1 commit into
gh-pagesfrom
issue-25-arbitrary-repos

Conversation

@melvincarvalho

Copy link
Copy Markdown
Contributor

Fixes #25. Builds on the install subcommand from #40.

What

Three input shapes accepted:

Input Resolves to Default pod path
`chrome` `github.com/solid-apps/chrome` `/public/apps/chrome/`
`/` `github.com//` `/public/apps//`
`https://github.com/...\` as-is `/public/apps//`

Two optional suffixes apply to any shape:

  • `#` — pin a branch or tag (uses `git clone --branch `)
  • `=` — rename the pod path, useful when the repo name isn't a clean slot

Verified end-to-end

```
$ jspod install litecut/litecut.github.io=litecut
✓ litecut/litecut.github.io=litecut → http://localhost:5444/public/apps/litecut/
```

  • `jspod install chrome` — backward compatible (solid-apps default)
  • `jspod install litecut/litecut.github.io=litecut` — clones from a non-solid-apps org and renames the pod path; HTTP 200 verified
  • `jspod install --help` reflects the new spec
  • README updated with new examples

Diff

  • `parseAppSpec()` — ~40 LoC, handles all three shapes + `#ref` + `=name` + validation
  • Loop refactored: `app` → `input`, uses `spec.{source, name, ref}`
  • `git clone --branch ` when pinned
  • Banner no longer hardcodes "solid-apps"

Follow-up

`#24` (non-git sources) stays open as the long-term umbrella.

jspod install previously hardcoded github.com/solid-apps/<name>. Accept
three input shapes now:

  jspod install chrome                              # solid-apps/<name>
  jspod install <org>/<repo>                        # any GitHub repo
  jspod install https://github.com/<org>/<repo>     # full URL

Optional suffixes apply to any form:

  ...#<branch-or-tag>    pin a ref (uses `git clone --branch <ref>`)
  ...=<pod-path-name>    rename the pod path (e.g. for repos whose name
                         doesn't fit a clean /public/apps/<x>/ slot, like
                         litecut/litecut.github.io=litecut)

The pod-path name is derived from the repo's last segment when not
overridden. Banner no longer hardcodes "solid-apps" since sources vary.

Help and README updated with examples. Fixes #25.
@melvincarvalho
melvincarvalho merged commit 4ff91dd into gh-pages May 17, 2026
@melvincarvalho
melvincarvalho deleted the issue-25-arbitrary-repos branch May 17, 2026 10:25
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.

Support git sources in jspod install (jspod install &lt;repo&gt;)

1 participant