
# 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는 이름에 16진수 문자 네 개를 붙여 구성됩니다. 기본값은 저장소 이름이며, `--git`인 경우 `sandbox`를 사용합니다. |
| `--theme` | 샌드박스에 복사할 테마입니다. 호스트에 설치되어 있어야 합니다. 기본값은 호스트의 활성 테마이며, `--clone-from`인 경우 원본 샌드박스의 테마입니다. |
| `--clone-from` | 호스트 대신 기존 샌드박스의 테이블과 테마를 복제합니다. |
| `--owner`, `--labels`, `--purpose` | 메타데이터입니다. 라벨은 쉼표로 구분합니다. |
| `--protected` | 정리 작업에서 샌드박스를 제외합니다. |
| `--ttl-days` | 생성 시점을 기준으로 한 만료 기간입니다. |
| `--expires-at` | 명시적 만료 타임스탬프입니다. |
| `--git` | 원격 저장소를 샌드박스 디렉터리에 복제합니다. [Git원격 저장소 복제](https://rudel.inline0.dev/ko/docs/features/git)를 참고하세요. |
| `--type` | `--git`의 체크아웃 위치입니다. `theme`(기본값) 또는 `plugin`입니다. |
| `--template` | 레코드에 저장되는 라벨이며 기본값은 `blank`입니다. 저장된 템플릿을 불러오지는 않습니다. |

`--clone-db`, `--clone-themes`, `--clone-plugins`, `--clone-uploads`, `--clone-all`, `--shared-plugins` 및 `--shared-uploads`은 더 이상 사용되지 않습니다. 진행 메시지만 변경하며, 각 샌드박스는 테이블을 복제하고 테마 하나를 복사하며 플러그인과 업로드 파일은 공유합니다.

명령은 샌드박스 디렉터리로 `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/ko/docs/features/cleanup)을 참조하세요.

## 로그

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

샌드박스 `debug.log`의 마지막 줄을 출력합니다(기본값 50). `--follow`은 `tail -f`을 실행하고, `--clear`은 파일을 비웁니다. [오류 로깅](https://rudel.inline0.dev/ko/docs/features/logging)을 참조하세요.

## 스냅샷

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

이름이 지정된 스냅샷을 만듭니다.

## 복원

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

스냅샷을 복원합니다. 명령을 실행하면 확인을 요청합니다. `--force`을 사용하면 확인 절차를 건너뜁니다. [스냅샷](https://rudel.inline0.dev/ko/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/ko/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/ko/docs/features/git)을 참조하세요.
