
# Hooks

Rudel kör WordPress-åtgärder och filter kring sandlådans livscykelhändelser. Katalogen nedan motsvarar vad `Rudel::hooks()` returnerar: 28 åtgärder och 5 filter.

## Exempel

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

De flesta `before`- och `failed`-åtgärder tar emot en array med `$context`. För sandlådans livscykel-hookar innehåller den `environment` (eller `name`, `options` och `environments_dir` vid skapande); `failed`-åtgärder tar även emot det fångade `Throwable` som `$error`.

## Åtgärder för sandlådans livscykel

| Åtgärd | Argument |
|--------|-----------|
| `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` |

De tre `replace_state`-åtgärderna hör till `EnvironmentManager::replace_environment_state()`, som inget Rudel-kommando anropar.

## Ögonblicksbildsåtgärder

| Åtgärd | Argument |
|--------|-----------|
| `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` innehåller `environment`, `kind` (`snapshot`), `name` och `path`. Var och en av dessa körs även under ett `snapshot`-alias, till exempel `rudel_after_snapshot_create`, och vid fel körs `rudel_failed_recovery_point_{create|restore|delete}` och `rudel_failed_snapshot_{create|restore|delete}` med `$context` och felet. Dessa alias finns inte i katalogen.

## Rensningsåtgärder

| Åtgärd | Argument |
|--------|-----------|
| `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` innehåller `removed`, `skipped`, `errors` och `reasons`.

## Git-pushåtgärder

| Åtgärd | Argument |
|--------|-----------|
| `rudel_before_environment_push` | `$context` |
| `rudel_after_environment_push` | `$sha`, `$context` |
| `rudel_environment_push_failed` | `$context`, `$error` |

Dessa körs för `Rudel::push()`. `$context` innehåller `environment`, `remote`, `message` och `subdir`. Kommandot `wp rudel push` skickar ändringarna direkt och kör inte dessa.

## Automatiseringsåtgärder

| Åtgärd | Argument |
|--------|-----------|
| `rudel_before_automation_cleanup` | `$config` |
| `rudel_after_automation_cleanup` | `$result`, `$config` |
| `rudel_after_automation_expiring_environments` | `$result`, `$config` |

`$config` är hela arrayen `rudel_config`. Se [Automation](https://rudel.inline0.dev/sv/docs/features/automation).

## Filter

| Filter | Argument |
|--------|-----------|
| `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` kan ändra alternativen för varje anrop till create innan Rudel hanterar dem. `rudel_environment_clone_source` filtrerar kloningsmetadata som sparats i en sandlåda som skapats från värden. `rudel_environment_db_dropin_contents` gäller bara tillägget `db.php` som miljöer för undersajter i multisite använder; överlagringssandlådor, den enda typ som aktuella versioner skapar, genererar aldrig ett sådant tillägg.

Filter är avsedda för justering av policy, inte för att ersätta lagringsmodellen för Rudel. Runtime-identitet, tabellprefix och arbetskatalogmetadata förblir DB-baserade tillstånd i Rudel.
