
# Zanke

Rudel sproži dejanja in filtre WordPress ob dogodkih življenjskega cikla peskovnika. Spodnji katalog je rezultat ukaza `Rudel::hooks()`: 28 dejanj in 5 filtrov.

## Primer

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

Večina dejanj `before` in `failed` prejme polje `$context`. Pri kavljih življenjskega cikla peskovnika vsebuje `environment` (ali `name`, `options` in `environments_dir` ob ustvarjanju); dejanja `failed` prejmejo tudi prestreženo izjemo `Throwable` kot `$error`.

## Dejanja življenjskega cikla peskovnika

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

Tri dejanja `replace_state` pripadajo `EnvironmentManager::replace_environment_state()`, ki ga ne pokliče noben ukaz Rudel.

## Dejanja posnetkov

| Dejanje | Argumenti |
|--------|-----------|
| `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` vsebuje `environment`, `kind` (`snapshot`), `name` in `path`. Vsako od teh dejanj se sproži tudi z vzdevkom `snapshot`, na primer `rudel_after_snapshot_create`; ob napakah se z `$context` in napako sprožita tudi `rudel_failed_recovery_point_{create|restore|delete}` in `rudel_failed_snapshot_{create|restore|delete}`. Ti vzdevki niso vključeni v katalog.

## Dejanja čiščenja

| Dejanje | Argumenti |
|--------|-----------|
| `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` vsebuje `removed`, `skipped`, `errors` in `reasons`.

## Dejanja pošiljanja Git

| Dejanje | Argumenti |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Ta dejanja se sprožijo za `Rudel::push()`. `$context` vsebuje `environment`, `remote`, `message` in `subdir`. Ukaz `wp rudel push` pošlje neposredno in jih ne sproži.

## Dejanja avtomatizacije

| Dejanje | Argumenti |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` je celotno polje `rudel_config`. Glejte [Avtomatizacija](https://rudel.inline0.dev/sl/docs/features/automation).

## Filtri

| Filter | Argumenti |
|--------|-----------|
| `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` lahko spremeni možnosti katerega koli klica za ustvarjanje, preden jih uporabi Rudel. `rudel_environment_clone_source` filtrira metapodatke klona, shranjene v peskovniku, ustvarjenem iz gostitelja. `rudel_environment_db_dropin_contents` velja samo za vtičnik `db.php`, ki ga uporabljajo okolja podmestij v večmestni namestitvi; prekrivni peskovniki, edina vrsta, ki jo ustvarjajo trenutne različice, ga nikoli ne ustvarijo.

Filtri so namenjeni prilagajanju pravilnikov, ne zamenjavi modela shranjevanja za Rudel. Identiteta izvajalnega okolja, predpone tabel in metapodatki delovnih imenikov ostajajo stanje Rudel, podprto z bazo podatkov.
