
# API

A `Rudel\Rudel` statikus homlokzat. Ezen az oldalon minden metódus az osztály nyilvános statikus metódusa.

```php
use Rudel\Rudel;

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

Azokhoz az életciklus-metódusokhoz, amelyek táblákat klónoznak vagy törölnek (`create()`, `create_from_git()`, `destroy()`, `cleanup()`, `cleanup_merged()`), élő WordPress kérésre van szükség `$wpdb` értékkel. WordPress rendszeren kívüli `Rudel::init()` utáni meghívásuk `RuntimeException` kivételt vált ki. Lásd az [Önálló használat](https://rudel.inline0.dev/hu/docs/features/standalone-use) szakaszt.

## Futásidejű környezet

Ezek a metódusok az aktuális kérést írják le. Sandboxon kívül `false` vagy `null` értéket adnak vissza.

| Metódus | Visszatérési érték |
|--------|---------|
| `is_sandbox(): bool` | `true`, ha az aktuális kérés sandboxban fut |
| `id(): ?string` | az aktuális sandbox azonosítója |
| `path(): ?string` | az aktuális sandbox könyvtára |
| `engine(): ?string` | `overlay` sandboxon belül |
| `table_prefix(): ?string` | a sandbox táblaprefixuma, például `wp_b65338d_` |
| `url(): ?string` | a sandbox URL; az overlay sandboxok megosztják a gazdagép URL értékét |
| `exit_url(): string` | a gazdagép URL értéke |
| `is_email_disabled(): bool` | `true`, ha a kéréshez kimenő levelezés le van tiltva |
| `log_path(): ?string` | `{sandbox directory}/debug.log` |
| `version(): ?string` | a telepített Rudel verziója |
| `cli_command(): string` | a WP-CLI gyökérparancs, `rudel`, hacsak nincs beállítva a `RUDEL_CLI_COMMAND` |

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

A fentieket egy tömbben adja vissza:

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

A `wp rudel status` függvénnyel azonos futásidejű összefoglalót adja vissza tömbként: a rendszerindítás állapotát, az aktuális sandboxot, a sandboxok könyvtárát és számát, a `rudel_config` értékeket, valamint azt, hogy ütemezve van-e automatizálás.

## Sandboxrekordok

A sandboxok `Rudel\Environment` objektumként jelennek meg. A hasznos, csak olvasható tulajdonságok közé tartozik a `id`, `name`, `path`, `created_at`, `status`, `template`, `owner`, `labels`, `purpose`, `expires_at`, `last_used_at`, `theme_slug`, `table_prefix` és `clone_source`. A metódusok közé tartozik a `is_protected()`, `get_url()`, `get_table_prefix()`, `get_size()` és `to_array()`.

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

Minden sandboxot `Environment` objektumokat tartalmazó tömbként ad vissza. Nem fogad el szűrőket.

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

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

Betölt egy sandboxot azonosító alapján, vagy `null` értéket ad vissza.

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

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

A sandboxkönyvtárakat tartalmazó könyvtárat adja vissza.

## Életciklus

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

Létrehoz egy sandboxot, és visszaadja azt. Az azonosító a névből és négy hexadecimális karakterből áll.

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

Beállítások:

| Kulcs | Jelentés |
|-----|---------|
| `theme` | A sandboxba másolandó téma slugja; alapértelmezés szerint a gazdagép aktív témája |
| `clone_from` | Egy meglévő sandbox azonosítója, amelyet a gazdagép helyett klónoz |
| `owner`, `purpose` | Szabad szöveges metaadatok |
| `labels` | Tömb vagy vesszővel elválasztott karakterlánc |
| `protected` | `true`, hogy a sandbox kimaradjon a tisztításból |
| `ttl_days` | Lejárat a létrehozás időpontjához képest |
| `expires_at` | Kifejezett lejárati időbélyeg |
| `template` | A rekordon tárolt címke; nem tölt be mentett sablont |
| `site_options` | A sandbox beállítási táblájába írt beállításnevek és skalárértékek |
| `skip_limits` | `true` az `max_sandboxes` és `max_disk_mb` megkerüléséhez |

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

Létrehoz egy sandboxot, majd klónozza bele a `$remote_url` elemet. A `create()` beállításokat, valamint a `name` értéket (alapértelmezés szerint a tároló nevét) és a `type` értéket (`theme` vagy `plugin`) fogadja el. Visszaadja a `[ 'environment' => Environment, 'git' => [...] ]` értéket. Sikertelen klónozás esetén a sandbox nem áll vissza; a hiba a `git.error` mezőben jelenik meg. Lásd: [Git](https://rudel.inline0.dev/hu/docs/features/git).

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

Frissíti az életciklus-metaadatokat, és visszaadja a frissített sandboxot. Az elfogadott kulcsok közé tartozik a `owner`, `labels`, `purpose`, `protected`, `ttl_days` (mostantól számítva), `expires_at`, `clear_expiry`, `name` és `site_options`.

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

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

Eltávolítja a sandbox tábláit, könyvtárát és kapcsolt munkafáit, majd törli a rekordját. Ha az azonosító nem létezik, `false` értéket ad vissza. Nem ellenőrzi a védelmet: a védett sandboxok is megsemmisülnek.

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

Alkalmazza a lejárati, kor- és inaktivitási szabályzatot. Beállítások: `dry_run` (bool), `max_age_days` és `max_idle_days` (nem nulla érték esetén felülírják a `rudel_config` értéket). Visszaadja a `removed`, `skipped`, `errors` és `reasons` értékeket (azonosító a `expired`, `age`, `idle` vagy `protected` értékhez). Lásd: [Tisztítás](https://rudel.inline0.dev/hu/docs/features/cleanup).

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

Eltávolítja azokat a sandboxokat, amelyek kapcsolt Git munkafaágai beolvadtak a tároló alapértelmezett ágába. Beállítás: `dry_run`.

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

Tevékenységet rögzít (`last_used_at`) az aktuális sandboxhoz. A Rudel minden sandboxkérésnél meghívja.

## Naplók

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

Visszaadja a sandbox `debug.log` utolsó sorait a következőként: `path`, `exists`, `empty`, `total_lines` és `lines`.

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

Kiüríti a sandbox `debug.log` elemét, és visszaadja a `path`, `existed` és `cleared` értékeket.

## Pillanatképek

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

Létrehoz egy pillanatképet, és visszaadja a metaadatait (`name`, `created_at`, `sandbox_id`).

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

Visszaállít egy pillanatképet. Az alapértelmezett `auto_snapshot_before_restore` beállítás esetén a Rudel előbb ment egy `pre-restore-...` pillanatképet.

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

A pillanatképek metaadatait sorolja fel, a legújabbal kezdve. Lásd: [Pillanatképek](https://rudel.inline0.dev/hu/docs/features/snapshots).

## Sablonok

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

A mentett sablonok csak fájlmásolatok. Egyetlen API vagy parancs sem hoz létre belőlük sandboxot. Lásd: [Sablonok](https://rudel.inline0.dev/hu/docs/features/templates).

## Git

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

Véglegesíti és feltolja a sandbox könyvtárán belüli munkapéldányt a `rudel/{id}` ágra. A `$remote_url` és a `$subdir` alapértelmezés szerint a sandboxon tárolt értékeket használja. Visszaadja a véglegesítés SHA-azonosítóját, vagy a `null` értéket, ha nem történt változás.

## Automatizálás

- A `Rudel::run_automation(): array` most futtatja az ütemezett automatizálási feladatokat.
- A `Rudel::run_scheduled_cleanup(): array` ugyanezt végzi el.

Lásd: [Automatizálás](https://rudel.inline0.dev/hu/docs/features/automation).

## Hookok és parancskatalógus

- A `Rudel::hooks(): array` visszaadja a dokumentált hookkatalógust, hooknév szerint indexelve. Lásd: [Hookok](https://rudel.inline0.dev/hu/docs/features/hooks).
- A `Rudel::cli_command_map(): array` minden `wp rudel` parancs és a mögötte álló PHP metódus szerializálható leírását adja vissza.
- A `Rudel::resolve_cli_command( $path, array $args = [], array $assoc_args = [] ): array` egy feldolgozott parancsból végrehajtási tervet készít, futtatás nélkül.

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

A legtöbb terv a `php` átvitelt használja. A `logs --follow` egy `shell` tervet eredményez, amely a `tail -f` alatt fut.

## Önálló inicializálás

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

A homlokzatot közvetlen MySQL kapcsolatra irányítja, hogy a WordPress rendszeren kívül is használható legyen. A `$context` a `environments_dir` értéket fogadja el.

```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' ]
);
```

- A `Rudel::ensure_schema(): void` létrehozza az aktív kapcsolathoz tartozó Rudel táblákat.
- A `Rudel::reset(): void` törli az önálló kapcsolatot és a gyorsítótárazott állapotot.
