feat(cli): add tinyforge terminal client
New zero-dependency Go CLI (cmd/cli) that drives the existing HTTP API: login/logout, apps list, deploy (synchronous, --timeout), logs (one-shot + -f SSE follow), and status. Caches a 24h JWT in ~/.tinyforge/config.json (0600, Chmod-enforced on overwrite); Bearer-header auth keeps the token out of server/proxy logs; no-echo password prompt (kernel32 on Windows, stty elsewhere). Server/token resolved via flags, TINYFORGE_URL/TINYFORGE_TOKEN env, or config. README CLI section + root-anchored .gitignore entries for the build output.
This commit is contained in:
@@ -115,6 +115,46 @@ curl -X POST https://your-domain/api/webhook/<secret> \
|
||||
3. Enter your provider's Issuer URL, Client ID, and Client Secret
|
||||
4. Set the Redirect URL to `https://your-domain/api/auth/oidc/callback`
|
||||
|
||||
## CLI
|
||||
|
||||
`tinyforge` is a terminal client for driving a server from the shell, built on the same HTTP API as the web UI.
|
||||
|
||||
### Build
|
||||
|
||||
```bash
|
||||
go build -o tinyforge ./cmd/cli # ./tinyforge (tinyforge.exe on Windows)
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
```bash
|
||||
# Log in once — caches a 24h token in ~/.tinyforge/config.json (mode 0600)
|
||||
tinyforge login --base-url http://localhost:8090
|
||||
# ...or non-interactively (no password echo / shell-history leak):
|
||||
TINYFORGE_PASSWORD=… tinyforge login --base-url http://localhost:8090 --user admin
|
||||
|
||||
tinyforge apps # list apps + container state
|
||||
tinyforge deploy my-app # deploy and wait for completion
|
||||
tinyforge deploy my-app --ref v1.2.3 --note "hotfix"
|
||||
tinyforge logs my-app -f # follow logs (Ctrl-C to stop)
|
||||
tinyforge status # server health + current user
|
||||
tinyforge status my-app # one app's containers
|
||||
tinyforge logout # revoke + clear the cached token
|
||||
```
|
||||
|
||||
### Server & token resolution
|
||||
|
||||
| Setting | Flag | Env | Default |
|
||||
| -------- | ------------ | ----------------- | ------------------------ |
|
||||
| Base URL | `--base-url` | `TINYFORGE_URL` | `http://localhost:8080` |
|
||||
| Token | `--token` | `TINYFORGE_TOKEN` | cached by `login` |
|
||||
| Config | `--config` | `TINYFORGE_CONFIG`| `~/.tinyforge/config.json` |
|
||||
|
||||
### Notes
|
||||
|
||||
- Login returns a **24h JWT** — there is no long-lived API token yet, so unattended use re-logs in when the token expires. `deploy` / `stop` / `start` require an **admin** account.
|
||||
- The token is sent as an `Authorization: Bearer` header (never placed in the URL) and the config file is written with `0600` permissions.
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user