Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Время без сюрпризов

now() не существует

Вызов now() или timestamp() — ошибка E0533. Это не пробел, а дизайн-решение (D13): текущее время сделало бы конфиг невоспроизводимым — сломались бы --dry-run-сравнения, кэши и сама идея «два прогона дают одинаковый результат».

Если время сборки действительно нужно — его передаёт хост:

built_at: env("BUILD_TIME", "unknown")
BUILD_TIME=$(date -u +%FT%TZ) aura eval app.aura --allow-env=BUILD_TIME

Решение о времени принимает и фиксирует запускающая сторона, конфиг остаётся чистой функцией от входов.

Длительности

Таймауты и TTL — строки с единицами d/h/m/s, парсятся в секунды (Int):

ttl = "1h30m".parse_duration() # → 5400
cache:
  ttl_seconds:   ttl
  refresh_every: (ttl / 3).format_duration() # → "30m"
end

Дальше — обычная целочисленная арифметика: сложение, вычитание, «перевести сутки в часы» и т.п. Некорректная строка — E0319.

Даты

RFC3339 ↔ epoch-секунды (UTC):

start = "2026-07-18T22:00:00Z".parse_datetime()      # → epoch Int
window:
  start: start
  end: (start + "4h".parse_duration()).format_datetime()
  # → "2026-07-19T02:00:00Z" — переход через полночь корректен
end

Поддерживаются смещения (+02:00 указывает на тот же момент времени) и короткая форма даты ("2026-07-18" — полночь UTC). Некорректная дата — E0320.

Календарная арифметика высокого уровня («+3 месяца», рабочие дни, таймзоны) — намеренно не в ядре: это территория будущих пакетов сообщества поверх epoch-примитивов.