mix rindle.regenerate_variants (Rindle v0.1.5)

Copy Markdown View Source

Enqueues ProcessVariant Oban jobs for broad stale/missing variant regeneration, optionally filtered by profile module or variant name.

This is the explicit maintenance lane for preset/profile drift and storage-verified missing derivatives. It is intentionally Mix-task-first and is not a single-asset public repair facade.

Usage

mix rindle.regenerate_variants [--profile PROFILE] [--variant VARIANT_NAME]

Options

  • --profile — Restrict to variants whose asset has this profile module name. Example: --profile Elixir.MyApp.AvatarProfile

  • --variant — Restrict to variants with this name. Example: --variant thumb

Exit codes

  • 0 — Operation completed (even if 0 variants were enqueued).
  • 1 — Query or job-insertion error.

Targeting rules

Only variants in stale or missing states are eligible for re-enqueueing. Variants in queued, processing, ready, failed, or cancelled states are not part of this broad maintenance lane and will not generate duplicate Oban jobs.

The stale state means the variant's recipe_digest no longer matches the profile's current recipe — the variant was generated from an outdated configuration. The missing state means the storage object is absent (as detected by a prior mix rindle.verify_storage run).

Output

The task emits a deterministic summary:

Rindle: broad regeneration scan for stale/missing variants...
  enqueued: 12
  skipped:  3
  errors:   0
Done.

When errors is non-zero the task halts with exit 1 after printing the summary so cron / CI pipelines surface the failure.

Examples

# Requeue all stale/missing variants
mix rindle.regenerate_variants

# Requeue only thumb variants
mix rindle.regenerate_variants --variant thumb

# Requeue only stale/missing variants for a specific profile
mix rindle.regenerate_variants --profile Elixir.MyApp.ImageProfile

Use asset-scoped repair surfaces for one-off failed/cancelled recovery. Use this task when you need auditable broad maintenance after recipe drift or after mix rindle.verify_storage has marked variants as missing.