Problem
jspod install (and the first-run bootstrap that seeds the default bundle) installs each app by git clone + git push to the pod's git-receive endpoint:
index.js runInstall() → spawnSync('git', ['clone', …]) then a git push to <pod>/public/apps/<name> (requires the pod started with --git).
That needs a git binary, child_process spawning, and the git HTTP backend. None of those exist on nodejs-mobile (the Android app, js-pod/android) — no git, no forking. So:
Ask
Add a git-less install path to jspod so embedders inherit bundling instead of reimplementing it:
- Resolve a bundle/app to its files over HTTP — e.g. the jsDelivr per-file tree API (
https://data.jsdelivr.com/v1/package/gh/<org>/<repo>@<ref>) + https://cdn.jsdelivr.net/gh/<org>/<repo>@<ref>/<file> — instead of git clone.
- Write the files into the pod (directly to
<root>/public/apps/<name>/ on disk for in-process, or PUT via the Solid HTTP API with the IdP token for remote).
- Expose it as a callable function (not just the CLI) and wire it into the in-process bootstrap (
afterReady), so first-run default bundle install works in git-less runtimes.
- Keep the git path as the default where git is available; pick git-less when git/spawn aren't (flag or auto-detect).
Payoff
Refs
Problem
jspod install(and the first-run bootstrap that seeds thedefaultbundle) installs each app by git clone + git push to the pod's git-receive endpoint:index.jsrunInstall()→spawnSync('git', ['clone', …])then agit pushto<pod>/public/apps/<name>(requires the pod started with--git).That needs a
gitbinary,child_processspawning, and the git HTTP backend. None of those exist on nodejs-mobile (the Android app, js-pod/android) — no git, no forking. So:start()added in Embeddable in-process start (no spawn) so jspod can wrap JSS on mobile/single-process runtimes #58 / feat(start): in-process mode (createServer, no jss spawn) — embeddable jspod #59 boots the server fine, but its bootstrap can't install apps there (the spawnerrorhandler just fires harmlessly).gh-pages) and write them to disk.Ask
Add a git-less install path to jspod so embedders inherit bundling instead of reimplementing it:
https://data.jsdelivr.com/v1/package/gh/<org>/<repo>@<ref>) +https://cdn.jsdelivr.net/gh/<org>/<repo>@<ref>/<file>— instead ofgit clone.<root>/public/apps/<name>/on disk for in-process, or PUT via the Solid HTTP API with the IdP token for remote).afterReady), so first-rundefaultbundle install works in git-less runtimes.Payoff
start()handles the server; this handles the apps.Refs
nodejs-assets/nodejs-project/main.jsseedAppsOnFirstRun/installApp) is a working reference implementation to port.