The CLI
Work on a theme in your editor instead of uploading a zip. Only what changed moves.
Install
npx @eldorados/cli theme list --site <site-id>Commands
| Command | What it does |
|---|---|
theme list | The themes on a site, newest first, with the live one marked |
theme pull [dir] | Download a snapshot. Only files that differ are fetched |
theme push [dir] | Upload what changed. Only new content is sent |
theme publish | Make a snapshot the one the public sees |
Useful flags: --dry-run says what would happen and changes nothing, --json is for CI, --publish publishes straight after a push, and --force pushes over a theme that moved since you pulled.
Settings
Three sources, in order of precedence:
- flags —
--token,--site,--theme,--api - environment —
ELDORADOS_THEME_TOKEN,ELDORADOS_SITE,ELDORADOS_THEME,ELDORADOS_API .eldorados.yml
development:
token: eld_theme_...
site: site_abc123
api: https://admin.el-dorados.com
production:
token: eld_theme_...
site: site_xyz789That file holds a credential that can change a live website. Add it to .gitignore. In CI use ELDORADOS_THEME_TOKEN from a secret. The CLI never prints the token, never puts it in a URL and never echoes it back.
Why a push is fast
The theme store is content-addressed, so a push is two steps and the second usually does not happen: send a sha256 per file, and only if the server replies that it is missing blobs send those files’ contents. A one-line CSS change moves one file. An unchanged theme moves nothing and says so.
What gets uploaded
Only the eight theme directories. Everything beside them — package.json, node_modules/, .env, your tooling — is not looked at. That is not a filter to remember; it is the only thing the walker reads.
Binary assets are reported as skipped; upload those through the admin’s media screen.