
# CLI

Rudelはコマンドを`wp rudel`に登録します。WP-CLIでは、ここに記載されていないオプションを指定すると`unknown --<name> parameter`で拒否されます。

プラグインの読み込み前に`wp-config.php`で`RUDEL_CLI_COMMAND`を定義すると、組み込み用途向けにルートコマンドの名前を変更できます。

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

これにより、`wp rudel create`が`wp sandbox create`に変わります。コマンドの動作は変わりません。

コマンドはデフォルトでホストに対して実行されます。別のWP-CLIコマンドをサンドボックス内で実行するには、`RUDEL_ENVIRONMENT`を設定します。

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

## 作成

```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>]
```

サンドボックスを作成し、そのIDを表示します。

| オプション | 意味 |
|--------|---------|
| `--name` | 人が読める名前。IDは名前に4桁の16進数文字を加えたものです。デフォルトは`--git`がある場合はリポジトリ名、ない場合は`sandbox`です。 |
| `--theme` | サンドボックスにコピーするテーマ。ホストにインストールされている必要があります。デフォルトはホストで有効なテーマ、または`--clone-from`を指定した場合はソースサンドボックスのテーマです。 |
| `--clone-from` | ホストの代わりに既存サンドボックスからテーブルとテーマを複製します。 |
| `--owner`、`--labels`、`--purpose` | メタデータ。ラベルはカンマ区切りです。 |
| `--protected` | サンドボックスをクリーンアップ対象から除外します。 |
| `--ttl-days` | 作成時点からの有効期限。 |
| `--expires-at` | 明示的な有効期限のタイムスタンプ。 |
| `--git` | リモートリポジトリをサンドボックスディレクトリに複製します。[Git](https://rudel.inline0.dev/ja/docs/features/git)を参照してください。 |
| `--type` | `--git`のチェックアウト先：`theme`（デフォルト）または`plugin`。 |
| `--template` | レコードに保存するラベル。デフォルトは`blank`です。保存済みテンプレートは読み込みません。 |

`--clone-db`、`--clone-themes`、`--clone-plugins`、`--clone-uploads`、`--clone-all`、`--shared-plugins`、`--shared-uploads`は非推奨です。進行状況メッセージを変えるだけで、どのサンドボックスもテーブルを複製し、テーマを1つコピーし、プラグインとアップロードを共有します。

このコマンドは、サンドボックスディレクトリに`cd`して`wp post list`を実行するよう案内して終了します。サンドボックスディレクトリ内の`wp-cli.yml`がホストのURLを指しているため、これはホストに対して実行されます。代わりに`RUDEL_ENVIRONMENT`を使ってください。

## 一覧

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

サンドボックスのID、名前、所有者、保護状態、有効期限、ステータス、テンプレートラベル、作成日時、ディレクトリサイズを一覧表示します。

## 情報

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

テーブル接頭辞、テーマ、ラベル、複製メタデータ、URL、コンテンツパスを含むサンドボックスのレコードを表示します。

## 更新

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

メタデータを更新します。`--ttl-days`は現在からの相対値です。サンドボックスのサイトコンテンツは変更しません。

## 削除

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

サンドボックスのテーブルを削除し、ディレクトリとリンクされたワークツリーを取り除いて、レコードを削除します。コマンドは確認を求めます。`--force`を指定すると確認を省略します。保護設定は`destroy`を妨げないため、保護されたサンドボックスも他と同様に破棄されます。

## 状態

```bash
wp rudel status
```

ブートストラップの状態、現在のサンドボックス、サンドボックスのディレクトリと件数、`rudel_config`の値、自動化がスケジュールされているかどうかを表に出力します。常に表を出力し、`--format`は無視します。

## クリーンアップ

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

`--merged`を指定しない場合、有効期限切れ、または経過期間の上限を超えたサンドボックスや、アイドル期間の上限を超えた保護されていないサンドボックスを削除します。`--max-age-days`と`--max-idle-days`を指定すると、この実行に限り`rudel_config`を上書きします。`--merged`を指定すると、リンクされたGitワークツリーのブランチがマージ済みのサンドボックスを削除します。保護されたサンドボックスは常に対象外です。[クリーンアップ](https://rudel.inline0.dev/ja/docs/features/cleanup)を参照してください。

## ログ

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

サンドボックスの`debug.log`の末尾（デフォルトは50行）を表示します。`--follow`は`tail -f`を実行し、`--clear`はファイルを空にします。[エラーログ](https://rudel.inline0.dev/ja/docs/features/logging)を参照してください。

## スナップショット

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

名前付きスナップショットを作成します。

## 復元

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

スナップショットを復元します。コマンドは確認を求めます。`--force`を指定すると確認を省略します。[スナップショット](https://rudel.inline0.dev/ja/docs/features/snapshots)を参照してください。

## テンプレート

```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]
```

テンプレートのコピーを保存、一覧表示、削除します。保存済みテンプレートからサンドボックスを作成するコマンドはありません。[テンプレート](https://rudel.inline0.dev/ja/docs/features/templates)を参照してください。

## プッシュ

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

サンドボックスディレクトリ内のチェックアウトをブランチ`rudel/<id>`にコミットしてプッシュします。

| オプション | 意味 |
|--------|---------|
| `--git` | リモートURL。保存済みのものがない場合にのみ必要で、初回のプッシュ成功後に記憶されます。 |
| `--dir` | サンドボックスディレクトリからの相対パス。例：`themes/my-theme`。デフォルトは保存済みのチェックアウトディレクトリ、なければサンドボックスディレクトリ全体です。 |
| `--message` | コミットメッセージ。デフォルトは`Update from Rudel sandbox`です。 |

[Git](https://rudel.inline0.dev/ja/docs/features/git)を参照してください。
