
# Koukkukohdat

Rudel käynnistää WordPress-toimintoja ja suodattimia hiekkalaatikon elinkaaritapahtumien yhteydessä. Alla oleva luettelo sisältää tulokset, jotka `Rudel::hooks()` palauttaa: 28 toimintoa ja 5 suodatinta.

## Esimerkki

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

Useimmat `before`- ja `failed`-toiminnot saavat argumenttina `$context`-taulukon. Hiekkalaatikon elinkaarikoukuissa se sisältää `environment`-tiedot (tai luotaessa arvot `name`, `options` ja `environments_dir`); myös `failed`-toiminnot saavat kiinni otetun `Throwable`-arvon muodossa `$error`.

## Hiekkalaatikon elinkaaritoiminnot

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

Kolme `replace_state`-toimintoa kuuluvat kohteeseen `EnvironmentManager::replace_environment_state()`, jota mikään Rudel-komento ei kutsu.

## Tilannevedostoiminnot

| Toiminto | Argumentit |
|--------|-----------|
| `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` sisältää arvot `environment`, `kind` (`snapshot`), `name` ja `path`. Kukin näistä käynnistyy myös aliaksella `snapshot`, esimerkiksi `rudel_after_snapshot_create`, ja virhetilanteissa käynnistyvät `rudel_failed_recovery_point_{create|restore|delete}` ja `rudel_failed_snapshot_{create|restore|delete}` arvoilla `$context` ja virheellä. Näitä aliaksia ei ole luettelossa.

## Siivoustoiminnot

| Toiminto | Argumentit |
|--------|-----------|
| `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` sisältää arvot `removed`, `skipped`, `errors` ja `reasons`.

## Git-lähetystoiminnot

| Toiminto | Argumentit |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Nämä käynnistyvät komennolle `Rudel::push()`. `$context` sisältää arvot `environment`, `remote`, `message` ja `subdir`. Komento `wp rudel push` lähettää suoraan eikä käynnistä niitä.

## Automaatiotoiminnot

| Toiminto | Argumentit |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` on koko `rudel_config`-taulukko. Katso [Automaatio](https://rudel.inline0.dev/fi/docs/features/automation).

## Suodattimet

| Suodatin | Argumentit |
|--------|-----------|
| `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` voi muuttaa minkä tahansa luontikutsun asetuksia ennen kuin Rudel käsittelee niitä. `rudel_environment_clone_source` suodattaa palvelimelta luotuun hiekkalaatikkoon tallennetut kloonin metatiedot. `rudel_environment_db_dropin_contents` koskee vain `db.php`-lisäosaa, jota monisivustoaliverkkotunnukset käyttävät; päällekkäishiekkalaatikot, joita nykyiset versiot luovat ainoastaan, eivät koskaan luo sitä.

Suodattimilla on tarkoitus muokata käytäntöjä, ei korvata kohteen Rudel tallennusmallia. Ajonaikainen tunniste, taulukoiden etuliitteet ja työhakemistojen metatiedot pysyvät tietokantaan tallennettuna Rudel-tilana.
