
# Konksud

Rudel käivitab liivakasti elutsükli sündmuste puhul WordPress toimingud ja filtrid. Allolev kataloog näitab, mida tagastab `Rudel::hooks()`: 28 toimingut ja 5 filtrit.

## Näide

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

Enamik `before` ja `failed` toiminguid saab argumendiks massiivi `$context`. Liivakasti elutsükli hookide puhul sisaldab see `environment` (või loomisel väärtusi `name`, `options` ja `environments_dir`); toimingud `failed` saavad tabatud `Throwable` lisaks argumendina `$error`.

## Liivakasti elutsükli toimingud

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

Kolm `replace_state` toimingut kuuluvad üksusele `EnvironmentManager::replace_environment_state()`, mida ükski Rudel käsk ei kutsu.

## Hetktõmmiste toimingud

| Toiming | Argumendid |
|--------|-----------|
| `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` sisaldab väärtusi `environment`, `kind` (`snapshot`), `name` ja `path`. Kõik need käivituvad ka `snapshot` aliasena, näiteks `rudel_after_snapshot_create`, ning tõrke korral käivituvad `rudel_failed_recovery_point_{create|restore|delete}` ja `rudel_failed_snapshot_{create|restore|delete}` koos väärtuse `$context` ja veaga. Neid aliaseid kataloogis pole.

## Puhastamise toimingud

| Toiming | Argumendid |
|--------|-----------|
| `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` sisaldab väärtusi `removed`, `skipped`, `errors` ja `reasons`.

## Git üleslaadimise toimingud

| Toiming | Argumendid |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Need käivituvad toimingu `Rudel::push()` puhul. `$context` sisaldab väärtusi `environment`, `remote`, `message` ja `subdir`. Käsk `wp rudel push` laadib muudatused otse üles ega käivita neid.

## Automatiseerimise toimingud

| Toiming | Argumendid |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` on kogu massiiv `rudel_config`. Vt [Automatiseerimine](https://rudel.inline0.dev/et/docs/features/automation).

## Filtrid

| Filter | Argumendid |
|--------|-----------|
| `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` saab muuta iga loomiskutse suvandeid enne, kui Rudel neid kasutab. `rudel_environment_clone_source` filtreerib hostist loodud liivakasti salvestatud kloonimise metaandmeid. `rudel_environment_db_dropin_contents` kehtib ainult `db.php` lisatava faili kohta, mida kasutavad mitme saidiga alamvõrkude keskkonnad; ülekattega liivakastid, mida praegused versioonid ainsana loovad, seda faili kunagi ei tekita.

Filtrid on mõeldud reeglite kohandamiseks, mitte üksuse Rudel salvestusmudeli asendamiseks. Käitusaja identiteet, tabelite prefiksid ja töökataloogi metaandmed jäävad andmebaasis hoitavaks Rudel olekuks.
