
# Āķi

Rudel izsauc WordPress darbības un filtrus saistībā ar smilškastes dzīves cikla notikumiem. Tālāk redzamais katalogs atbilst tam, ko atgriež `Rudel::hooks()`: 28 darbības un 5 filtri.

## Piemērs

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

Lielākā daļa `before` un `failed` darbību saņem `$context` masīvu. Smilškastes dzīves cikla āķiem tajā ir `environment` (vai `name`, `options` un `environments_dir` izveides laikā); arī `failed` darbības saņem pārtverto `Throwable` kā `$error`.

## Smilškastes dzīves cikla darbības

| Darbība | 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` |

Trīs `replace_state` darbības pieder `EnvironmentManager::replace_environment_state()`, kuru neizsauc neviena Rudel komanda.

## Momentuzņēmumu darbības

| Darbība | 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` ietver `environment`, `kind` (`snapshot`), `name` un `path`. Katrs no tiem tiek izsaukts arī ar `snapshot` aizstājvārdu, piemēram, `rudel_after_snapshot_create`, un kļūmju gadījumā tiek izsaukti `rudel_failed_recovery_point_{create|restore|delete}` un `rudel_failed_snapshot_{create|restore|delete}` ar `$context` un kļūdu. Šie aizstājvārdi katalogā nav iekļauti.

## Tīrīšanas darbības

| Darbība | 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` ietver `removed`, `skipped`, `errors` un `reasons`.

## Git iesūtīšanas darbības

| Darbība | Argumenti |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Tās tiek izsauktas `Rudel::push()` vajadzībām. `$context` ietver `environment`, `remote`, `message` un `subdir`. Komanda `wp rudel push` iesūta tieši un tās neizsauc.

## Automatizācijas darbības

| Darbība | Argumenti |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` ir viss `rudel_config` masīvs. Skatiet [Automatizācija](https://rudel.inline0.dev/lv/docs/features/automation).

## Filtri

| Filtrs | 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` var mainīt jebkura izveides izsaukuma opcijas, pirms Rudel tās apstrādā. Filtrs `rudel_environment_clone_source` maina klona metadatus, kas tiek saglabāti smilškastē, kura izveidota no resursdatora. `rudel_environment_db_dropin_contents` attiecas tikai uz `db.php` papildmoduli, ko izmanto vairāku vietņu apakšvietņu vidēs; pārklājuma smilškastes, ko izveido tikai pašreizējās versijas, tādu nekad nerada.

Filtri ir paredzēti politikas pielāgošanai, nevis Rudel glabāšanas modeļa aizstāšanai. Izpildlaika identitāte, tabulu prefiksi un darba koka metadati paliek DB nodrošināts Rudel stāvoklis.
