
# CLI

Rudel registriert seine Befehle unter `wp rudel`. WP-CLI weist eine Option, die ein Befehl hier nicht aufführt, mit `unknown --<name> parameter` zurück.

Für die Verwendung in einem eingebetteten Setup kannst du den Root-Befehl umbenennen, indem du `RUDEL_CLI_COMMAND` in `wp-config.php` definierst, bevor das Plugin geladen wird.

```php
define( 'RUDEL_CLI_COMMAND', 'sandbox' );
```

Dadurch wird aus `wp rudel create` der Befehl `wp sandbox create`. Das Verhalten des Befehls ändert sich nicht.

Befehle werden standardmäßig auf dem Host ausgeführt. Um einen anderen WP-CLI-Befehl in einer Sandbox auszuführen, setze `RUDEL_ENVIRONMENT`:

```bash
RUDEL_ENVIRONMENT=alpha-3be7 wp option get blogname
```

## create

```bash
wp rudel create [--name=<name>] [--theme=<slug>] [--clone-from=<id>] [--owner=<owner>] [--labels=<labels>] [--purpose=<purpose>] [--protected] [--ttl-days=<days>] [--expires-at=<timestamp>] [--git=<remote>] [--type=<theme|plugin>] [--template=<label>]
```

Erstellt eine Sandbox und gibt ihre ID aus.

| Option | Bedeutung |
|--------|---------|
| `--name` | Lesbarer Name. Die ID besteht aus dem Namen und vier Hex-Zeichen. Standardmäßig wird der Repository-Name mit `--git` verwendet, ansonsten `sandbox`. |
| `--theme` | Theme, das in die Sandbox kopiert wird. Es muss auf dem Host installiert sein. Standardmäßig wird das aktive Theme des Hosts verwendet, bei `--clone-from` das Theme der Quell-Sandbox. |
| `--clone-from` | Klont Tabellen und Theme aus einer bestehenden Sandbox statt vom Host. |
| `--owner`, `--labels`, `--purpose` | Metadaten. Labels werden durch Kommas getrennt. |
| `--protected` | Nimmt die Sandbox von der Bereinigung aus. |
| `--ttl-days` | Ablaufzeit ab dem Erstellungszeitpunkt. |
| `--expires-at` | Expliziter Ablaufzeitpunkt. |
| `--git` | Klont ein Remote-Repository in das Sandbox-Verzeichnis. Siehe [Git](https://rudel.inline0.dev/de/docs/features/git). |
| `--type` | Legt fest, wo `--git` ausgecheckt wird: `theme` (Standard) oder `plugin`. |
| `--template` | Ein im Eintrag gespeichertes Label, standardmäßig `blank`. Lädt keine gespeicherte Vorlage. |

`--clone-db`, `--clone-themes`, `--clone-plugins`, `--clone-uploads`, `--clone-all`, `--shared-plugins` und `--shared-uploads` sind veraltet. Sie ändern nur die Fortschrittsmeldungen: Jede Sandbox klont die Tabellen, kopiert ein Theme und nutzt Plugins sowie Uploads gemeinsam.

Der Befehl endet mit dem Hinweis, in das Sandbox-Verzeichnis zu `cd` und `wp post list` auszuführen. Das geschieht auf dem Host, weil `wp-cli.yml` im Sandbox-Verzeichnis auf die URL des Hosts verweist. Verwende stattdessen `RUDEL_ENVIRONMENT`.

## list

```bash
wp rudel list [--format=<table|json|csv|yaml|count>]
```

Listet Sandboxes mit ID, Name, Eigentümer, Schutzstatus, Ablaufzeit, Status, Vorlagenlabel, Erstellungszeit und Verzeichnisgröße auf.

## info

```bash
wp rudel info <id> [--format=<table|json|yaml>]
```

Zeigt einen Sandbox-Eintrag mit Tabellenpräfix, Theme, Labels, Klon-Metadaten, URL und Inhaltspfad an.

## update

```bash
wp rudel update <id> [--owner=<owner>] [--labels=<labels>] [--purpose=<purpose>] [--protected] [--unprotected] [--ttl-days=<days>] [--expires-at=<timestamp>] [--clear-expiry]
```

Aktualisiert Metadaten. `--ttl-days` zählt ab jetzt. Der Inhalt der Sandbox-Website wird nicht verändert.

## destroy

```bash
wp rudel destroy <id> [--force]
```

Löscht die Sandboxtabellen, entfernt ihr Verzeichnis und verknüpfte Worktrees und löscht den Eintrag. Der Befehl fragt nach einer Bestätigung; `--force` überspringt die Abfrage. Der Schutzstatus verhindert `destroy` nicht: Eine geschützte Sandbox wird wie jede andere gelöscht.

## status

```bash
wp rudel status
```

Gibt eine Tabelle mit Bootstrap-Status, aktueller Sandbox, Sandbox-Verzeichnis, Sandbox-Anzahl, den Werten von `rudel_config` und dem Status der geplanten Automatisierung aus. Die Ausgabe erfolgt immer als Tabelle; `--format` wird ignoriert.

## cleanup

```bash
wp rudel cleanup [--dry-run] [--max-age-days=<days>] [--max-idle-days=<days>] [--merged]
```

Ohne `--merged` werden ungeschützte Sandboxes entfernt, deren Ablaufzeit erreicht ist, die älter als das Alterslimit sind oder länger als das Inaktivitätslimit nicht genutzt wurden. `--max-age-days` und `--max-idle-days` überschreiben `rudel_config` für diesen Lauf. Mit `--merged` werden Sandboxes entfernt, deren verknüpfte Git-Worktree-Branches integriert wurden. Geschützte Sandboxes werden immer übersprungen. Siehe [Bereinigung](https://rudel.inline0.dev/de/docs/features/cleanup).

## logs

```bash
wp rudel logs <id> [--lines=<lines>] [--follow] [--clear]
```

Gibt die letzten Zeilen des Sandbox-`debug.log` aus (Standard: 50). `--follow` führt `tail -f` aus; `--clear` leert die Datei. Siehe [Fehlerprotokollierung](https://rudel.inline0.dev/de/docs/features/logging).

## snapshot

```bash
wp rudel snapshot <id> --name=<name>
```

Erstellt einen benannten Snapshot.

## restore

```bash
wp rudel restore <id> --snapshot=<name> [--force]
```

Stellt einen Snapshot wieder her. Der Befehl fragt nach einer Bestätigung; `--force` überspringt die Abfrage. Siehe [Snapshots](https://rudel.inline0.dev/de/docs/features/snapshots).

## template

```bash
wp rudel template save <id> --name=<name> [--description=<description>]
wp rudel template list [--format=<table|json|csv|yaml|count>]
wp rudel template delete <name> [--force]
```

Speichert, listet und löscht Vorlagenkopien. Kein Befehl erstellt eine Sandbox aus einer gespeicherten Vorlage. Siehe [Vorlagen](https://rudel.inline0.dev/de/docs/features/templates).

## push

```bash
wp rudel push <id> [--git=<remote>] [--dir=<dir>] [--message=<message>]
```

Commitet und pusht einen Checkout im Sandbox-Verzeichnis in den Branch `rudel/<id>`.

| Option | Bedeutung |
|--------|---------|
| `--git` | Remote-URL. Nur erforderlich, wenn keiner gespeichert ist; nach dem ersten erfolgreichen Push wird er gespeichert. |
| `--dir` | Verzeichnis relativ zum Sandbox-Verzeichnis, zum Beispiel `themes/my-theme`. Standardmäßig wird das gespeicherte Checkout-Verzeichnis verwendet, ansonsten das gesamte Sandbox-Verzeichnis. |
| `--message` | Commit-Nachricht, standardmäßig `Update from Rudel sandbox`. |

Siehe [Git](https://rudel.inline0.dev/de/docs/features/git).
