
# API

`Rudel\Rudel` statik bir cephedir. Bu sayfadaki her yöntem, bu sınıfın genel statik yöntemidir.

```php
use Rudel\Rudel;

if ( Rudel::is_sandbox() ) {
    error_log( 'Running in sandbox ' . Rudel::id() );
}
```

Tabloları kopyalayan veya kaldıran yaşam döngüsü yöntemleri (`create()`, `create_from_git()`, `destroy()`, `cleanup()`, `cleanup_merged()`), `$wpdb` içeren etkin bir WordPress isteği gerektirir. Bu yöntemler, WordPress dışında, `Rudel::init()` sonrasında çağrılırsa `RuntimeException` fırlatır. Bkz. [Bağımsız Kullanım](https://rudel.inline0.dev/tr/docs/features/standalone-use).

## Çalışma zamanı bağlamı

Bu yöntemler mevcut isteği açıklar. Sandbox dışında `false` veya `null` döndürürler.

| Yöntem | Döndürdüğü |
|--------|---------|
| `is_sandbox(): bool` | Mevcut istek sandbox içinde çalışıyorsa `true` |
| `id(): ?string` | Mevcut sandbox kimliği |
| `path(): ?string` | Mevcut sandbox dizini |
| `engine(): ?string` | Sandbox içindeyken `overlay` |
| `table_prefix(): ?string` | Sandbox tablo öneki, örneğin `wp_b65338d_` |
| `url(): ?string` | Sandbox URL; katmanlı sandbox'lar ana makinenin URL değerini paylaşır |
| `exit_url(): string` | Ana makinenin URL değeri |
| `is_email_disabled(): bool` | İstek için dışarı giden posta engellendiğinde `true` |
| `log_path(): ?string` | `{sandbox directory}/debug.log` |
| `version(): ?string` | Yüklü Rudel sürümü |
| `cli_command(): string` | WP-CLI kök komutu; `RUDEL_CLI_COMMAND` ayarlanmadıkça `rudel` |

### `Rudel::context(): array`

Yukarıdakilerin tümünü tek bir dizide döndürür:

```php
[
    'is_sandbox'     => true,
    'id'             => 'alpha-3be7',
    'path'           => '/var/www/html/wp-content/rudel-environments/alpha-3be7',
    'engine'         => 'overlay',
    'table_prefix'   => 'wp_b65338d_',
    'url'            => 'http://localhost/',
    'exit_url'       => 'http://localhost/',
    'email_disabled' => true,
    'log_path'       => '/var/www/html/wp-content/rudel-environments/alpha-3be7/debug.log',
    'version'        => '0.10.0',
    'cli_command'    => 'rudel',
]
```

### `Rudel::status(): array`

`wp rudel status` ile aynı çalışma zamanı özetini dizi olarak döndürür: önyükleme durumu, mevcut sandbox, sandbox dizini ve sayısı, `rudel_config` değerleri ve otomasyonun planlanıp planlanmadığı.

## Sandbox kayıtları

Sandbox'lar `Rudel\Environment` nesneleri olarak döndürülür. Salt okunur kullanışlı özellikler arasında `id`, `name`, `path`, `created_at`, `status`, `template`, `owner`, `labels`, `purpose`, `expires_at`, `last_used_at`, `theme_slug`, `table_prefix` ve `clone_source` bulunur. Yöntemler arasında `is_protected()`, `get_url()`, `get_table_prefix()`, `get_size()` ve `to_array()` yer alır.

### `Rudel::all(): array`

Her sandbox'ı `Environment` nesnelerinden oluşan bir dizi olarak döndürür. Filtre almaz.

```php
foreach ( Rudel::all() as $sandbox ) {
    echo $sandbox->id . ' ' . $sandbox->status . "\n";
}
```

### `Rudel::get( string $id ): ?Environment`

Bir sandbox'ı kimliğine göre yükler veya `null` döndürür.

```php
$sandbox = Rudel::get( 'alpha-3be7' );
```

### `Rudel::environments_dir(): string`

Sandbox dizinlerini barındıran dizini döndürür.

## Yaşam döngüsü

### `Rudel::create( string $name, array $options = [] ): Environment`

Bir sandbox oluşturur ve döndürür. Kimlik, addan ve dört onaltılık karakterden oluşturulur.

```php
$sandbox = Rudel::create( 'alpha', [
    'theme'    => 'twentytwentyfour',
    'owner'    => 'dennis',
    'labels'   => [ 'qa', 'agent' ],
    'ttl_days' => 7,
] );
```

Seçenekler:

| Anahtar | Anlamı |
|-----|---------|
| `theme` | Sandbox'a kopyalanacak tema kısa adı; varsayılan, ana makinenin etkin temasıdır |
| `clone_from` | Ana makine yerine kopyalanacak mevcut sandbox'ın kimliği |
| `owner`, `purpose` | Serbest metinli üst veriler |
| `labels` | Dizi veya virgülle ayrılmış dize |
| `protected` | Sandbox'ı temizleme işleminden hariç tutmak için `true` |
| `ttl_days` | Oluşturulma zamanına göre sona erme süresi |
| `expires_at` | Açık sona erme zaman damgası |
| `template` | Kayıtta saklanan etiket; kaydedilmiş şablonu yüklemez |
| `site_options` | Sandbox seçenekleri tablosuna yazılan seçenek adları ve skaler değerler |
| `skip_limits` | `max_sandboxes` ve `max_disk_mb` öğelerini atlamak için `true` |

### `Rudel::create_from_git( string $remote_url, array $options = [] ): array`

Bir sandbox oluşturur, ardından `$remote_url` öğesini içine kopyalar. `create()` seçeneklerini ve ayrıca `name` (varsayılan olarak depo adı) ile `type` (`theme` veya `plugin`) değerlerini kabul eder. `[ 'environment' => Environment, 'git' => [...] ]` döndürür. Kopyalama başarısız olursa sandbox geri alınmaz; hata `git.error` içinde döndürülür. Bkz. [Git](https://rudel.inline0.dev/tr/docs/features/git).

### `Rudel::update( string $id, array $changes ): Environment`

Yaşam döngüsü üst verilerini günceller ve yenilenmiş sandbox'ı döndürür. Kabul edilen anahtarlar arasında `owner`, `labels`, `purpose`, `protected`, `ttl_days` (şimdiki zamana göre), `expires_at`, `clear_expiry`, `name` ve `site_options` bulunur.

```php
Rudel::update( 'alpha-3be7', [ 'protected' => true, 'ttl_days' => 3 ] );
```

### `Rudel::destroy( string $id ): bool`

Sandbox tablolarını kaldırır, dizinini ve bağlantılı çalışma ağaçlarını siler, ardından kaydını siler. Kimlik yoksa `false` döndürür. Koruma durumunu denetlemez: korunan sandbox'lar da yok edilir.

### `Rudel::cleanup( array $options = [] ): array`

Sona erme, yaş ve etkin olmama politikalarını çalıştırır. Seçenekler: `dry_run` (bool), `max_age_days` ve `max_idle_days` (sıfırdan farklı olduğunda `rudel_config` değerini geçersiz kılar). `removed`, `skipped`, `errors` ve `reasons` döndürür (kimlikten `expired`, `age`, `idle` veya `protected` değerine eşleme). Bkz. [Temizleme](https://rudel.inline0.dev/tr/docs/features/cleanup).

### `Rudel::cleanup_merged( array $options = [] ): array`

Bağlantılı Git çalışma ağacı dalları deponun varsayılan dalıyla birleştirilmiş sandbox'ları kaldırır. Seçenek: `dry_run`.

### `Rudel::touch_current_environment(): void`

Mevcut sandbox için etkinlik kaydeder (`last_used_at`). Rudel bunu her sandbox isteğinde çağırır.

## Günlükler

### `Rudel::read_log( string $id, int $lines = 50 ): array`

Sandbox `debug.log` dosyasının son satırlarını `path`, `exists`, `empty`, `total_lines` ve `lines` olarak döndürür.

### `Rudel::clear_log( string $id ): array`

Sandbox `debug.log` dosyasını boşaltır ve `path`, `existed` ve `cleared` döndürür.

## Anlık görüntüler

### `Rudel::snapshot( string $id, string $name ): array`

Bir anlık görüntü oluşturur ve üst verilerini (`name`, `created_at`, `sandbox_id`) döndürür.

### `Rudel::restore( string $id, string $name ): void`

Bir anlık görüntüyü geri yükler. Varsayılan `auto_snapshot_before_restore` ayarıyla Rudel önce bir `pre-restore-...` anlık görüntüsü kaydeder.

### `Rudel::snapshots( string $id ): array`

Anlık görüntü üst verilerini en yeniden başlayarak listeler. Bkz. [Anlık Görüntüler](https://rudel.inline0.dev/tr/docs/features/snapshots).

## Şablonlar

- `Rudel::save_template( string $id, string $name, string $description = '' ): array`
- `Rudel::templates(): array`
- `Rudel::delete_template( string $name ): bool`

Kaydedilmiş şablonlar yalnızca dosya kopyalarıdır. Hiçbir API veya komut, bir şablondan sandbox oluşturmaz. Bkz. [Şablonlar](https://rudel.inline0.dev/tr/docs/features/templates).

## Git

### `Rudel::push( string $id, string $remote_url = '', string $message = 'Update from Rudel', string $subdir = '' ): ?string`

Sandbox dizini içindeki bir çalışma kopyasını `rudel/{id}` dalına kaydeder ve gönderir. `$remote_url` ve `$subdir` varsayılan olarak sandbox'ta saklanan değerleri kullanır. Değişiklik yoksa commit SHA'sını veya `null` döndürür.

## Otomasyon

- `Rudel::run_automation(): array` planlanmış otomasyon görevlerini hemen çalıştırır.
- `Rudel::run_scheduled_cleanup(): array` aynı işlemi yapar.

Bkz. [Otomasyon](https://rudel.inline0.dev/tr/docs/features/automation).

## Kancalar ve komut kataloğu

- `Rudel::hooks(): array`, belgelediği kanca kataloğunu kanca adına göre anahtarlanmış olarak döndürür. Bkz. [Kancalar](https://rudel.inline0.dev/tr/docs/features/hooks).
- `Rudel::cli_command_map(): array`, her `wp rudel` komutunun ve onu çalıştıran PHP yönteminin serileştirilebilir açıklamasını döndürür.
- `Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array`, ayrıştırılmış tek bir komutu çalıştırmadan yürütme planına dönüştürür.

```php
$plan = Rudel::resolve_cli_command( 'wp rudel destroy', [ 'alpha-3be7' ] );
// $plan['callable']           => 'Rudel\Rudel::destroy'
// $plan['arguments']          => [ 'alpha-3be7' ]
// $plan['needs_confirmation'] => true
```

Planların çoğu `php` aktarımını kullanır. `logs --follow`, `tail -f` çalıştırılan bir `shell` planına çözülür.

## Bağımsız başlatma

### `Rudel::init( Connection $connection, array $context = [] ): void`

Cephenin, WordPress dışında kullanmak üzere doğrudan bir MySQL bağlantısına yöneltilmesini sağlar. `$context`, `environments_dir` kabul eder.

```php
use Rudel\Connection;
use Rudel\Rudel;

Rudel::init(
    new Connection( '127.0.0.1', 'wordpress', 'root', 'root', 'wp_' ),
    [ 'environments_dir' => '/var/www/html/wp-content/rudel-environments' ]
);
```

- `Rudel::ensure_schema(): void`, etkin bağlantı için Rudel tablolarını oluşturur.
- `Rudel::reset(): void` bağımsız bağlantıyı ve önbelleğe alınmış durumu temizler.
