
# Hooki

Rudel uruchamia akcje i filtry WordPress dotyczące zdarzeń cyklu życia piaskownicy. Poniższy katalog odpowiada temu, co zwraca `Rudel::hooks()`: 28 akcji i 5 filtrów.

## Przykład

```php
add_action(
    'rudel_after_environment_create',
    function ( \Rudel\Environment $environment, array $context ): void {
        error_log( 'Created Rudel environment ' . $environment->id );
    },
    10,
    2
);
```

Większość akcji `before` i `failed` otrzymuje tablicę `$context`. W hakach cyklu życia piaskownicy zawiera ona `environment` (lub podczas tworzenia: `name`, `options` i `environments_dir`); akcje `failed` otrzymują również przechwycony `Throwable` jako `$error`.

## Akcje cyklu życia piaskownicy

| Akcja | Argumenty |
|--------|-----------|
| `rudel_before_environment_create` | `$context` |
| `rudel_after_environment_create` | `$environment`, `$context` |
| `rudel_environment_create_failed` | `$context`, `$error` |
| `rudel_before_environment_update` | `$context` |
| `rudel_after_environment_update` | `$environment`, `$context` |
| `rudel_environment_update_failed` | `$context`, `$error` |
| `rudel_before_environment_destroy` | `$context` |
| `rudel_after_environment_destroy` | `$context` |
| `rudel_environment_destroy_failed` | `$context`, `$error` |
| `rudel_before_environment_replace_state` | `$context` |
| `rudel_after_environment_replace_state` | `$result`, `$context` |
| `rudel_environment_replace_state_failed` | `$context`, `$error` |

Trzy akcje `replace_state` należą do `EnvironmentManager::replace_environment_state()`, którego nie wywołuje żadne polecenie Rudel.

## Akcje migawek

| Akcja | Argumenty |
|--------|-----------|
| `rudel_before_recovery_point_create` | `$context` |
| `rudel_after_recovery_point_create` | `$context`, `$meta` |
| `rudel_before_recovery_point_restore` | `$context` |
| `rudel_after_recovery_point_restore` | `$context` |
| `rudel_before_recovery_point_delete` | `$context` |
| `rudel_after_recovery_point_delete` | `$context` |

`$context` zawiera `environment`, `kind` (`snapshot`), `name` i `path`. Każda z nich jest też uruchamiana pod aliasem `snapshot`, na przykład `rudel_after_snapshot_create`, a błędy uruchamiają `rudel_failed_recovery_point_{create|restore|delete}` i `rudel_failed_snapshot_{create|restore|delete}` z `$context` oraz błędem. Tych aliasów nie ma w katalogu.

## Akcje czyszczenia

| Akcja | Argumenty |
|--------|-----------|
| `rudel_before_environment_cleanup` | `$options` |
| `rudel_after_environment_cleanup` | `$result`, `$options` |
| `rudel_before_environment_cleanup_merged` | `$options` |
| `rudel_after_environment_cleanup_merged` | `$result`, `$options` |

`$result` zawiera `removed`, `skipped`, `errors` i `reasons`.

## Akcje wypychania Git

| Akcja | Argumenty |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Te akcje są uruchamiane dla `Rudel::push()`. `$context` zawiera `environment`, `remote`, `message` i `subdir`. Polecenie `wp rudel push` wypycha zmiany bezpośrednio i ich nie uruchamia.

## Akcje automatyzacji

| Akcja | Argumenty |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` to pełna tablica `rudel_config`. Zobacz [Automatyzacja](https://rudel.inline0.dev/pl/docs/features/automation).

## Filtry

| Filtr | Argumenty |
|--------|-----------|
| `rudel_environment_create_options` | `$options`, `$name`, `$manager` |
| `rudel_environment_clone_source` | `$clone_source`, `$host_url`, `$db_cloned`, `$themes_cloned`, `$plugins_cloned`, `$uploads_cloned`, `$extra` |
| `rudel_environment_cleanup_options` | `$options`, `$repository` |
| `rudel_environment_cleanup_merged_options` | `$options`, `$repository` |
| `rudel_environment_db_dropin_contents` | `$contents`, `$context` |

`rudel_environment_create_options` może zmienić opcje każdego wywołania create, zanim Rudel zacznie ich używać. Filtr `rudel_environment_clone_source` modyfikuje metadane klonowania zapisane w piaskownicy utworzonej z hosta. `rudel_environment_db_dropin_contents` dotyczy tylko wtyczki drop-in `db.php` używanej w środowiskach multisite z podwitrynami; piaskownice nakładkowe, jedyny rodzaj tworzony przez obecne wersje, nigdy jej nie generują.

Filtry służą do dostosowywania zasad, a nie do zastępowania modelu przechowywania danych Rudel. Tożsamość środowiska uruchomieniowego, prefiksy tabel i metadane drzew roboczych pozostają stanem Rudel opartym na DB.
