# dweller CLI

A single static binary for Windows, macOS and Linux. It publishes builds, manages store pages, and is safe for scripts, CI and AI agents to drive.

## Install

```sh
# macOS / Linux
curl -fsSL https://dweller.games/install-cli.sh | sh
```

```powershell
# Windows (PowerShell)
irm https://dweller.games/install-cli.ps1 | iex
```

## Sign in

```sh
dweller login            # prints a URL + code; approve it in your browser
dweller login --token dg_xxx   # or save a personal token
dweller whoami
```

In CI set `DWELLER_TOKEN` instead (create one at [Settings → API tokens](https://dweller.games/settings/tokens)). `DWELLER_API` overrides the API base URL.

## Commands

| Command | What it does |
|---|---|
| `dweller init [--title T] [--slug S] [--tagline …] [--tags a,b] [--engine …]` | Writes `dweller.json` in the current folder (and creates the game if it doesn't exist). |
| `dweller push [paths…] --version V [--notes …\|--notes-file F] [--platform P] [--arch A] [--exec E] [--game slug] [--beta] [--draft] [--publish-game]` | Uploads builds and creates a release. With no paths it uses the `builds` list from `dweller.json`. Folders are zipped automatically. |
| `dweller games` | Lists your games. |
| `dweller create "Title" [--slug S]` | Creates a draft game. |
| `dweller update [--game slug] [--title …] [--tagline …] [--description-file README.md] [--tags …] [--status published\|unlisted\|draft]` | Edits the store page. |
| `dweller media header.png --kind header` | Uploads a header, cover or screenshot (`--kind screenshot` accepts many files). |
| `dweller open [slug]` | Prints the store URL. |
| `dweller version` | Prints the CLI version. |

Every command accepts `--json` for machine-readable output.

## Examples

```sh
# Publish everything listed in dweller.json
dweller push --version 1.4.0 --notes-file CHANGELOG.md

# One-off: a web build folder and a Windows zip
dweller push build/web build/MyGame-windows.zip --version 1.4.1 --notes "Hotfix"

# Explicit platform for an ambiguous file name
dweller push dist/game.zip --platform linux --exec game.x86_64 --version 2.0.0
```

Platform detection from names: `win`/`windows`/`.exe` → Windows, `mac`/`macos`/`darwin`/`.dmg` → macOS, `linux`/`.x86_64`/`.AppImage` → Linux, `web`/`html5` → Web, `.apk` → Android, `.gba` → GBA. Use `--platform` when a name has no hint.
