Skip to content

Макросы

Макрос - это специальная конструкция, которая позволяет динамически подставлять значения в конфигурации проекта.

Описание

Макрос может использоваться в любой части конфигурации проекта и позволяет динамически подставлять:

  • переменные окружения
  • дату и время
  • пути к файлам и каталогам
  • значения, зависящие от условий

Формат

Макрос представляет собой специальную синтаксическую конструкцию, четко определенного формата.

Макрос начинается с символа $, затем указывается имя макроса и параметры (разделенные запятыми) в скобках.

В качестве параметров макроса можно указывать другие макросы.

$macro(param1, param2)

$macro($macro2(param1), param2)

Поддерживаемые макросы

ИмяОписание
$base64decodeДекодирует строку из формата base64.
$base64encodeКодирует строку в формат base64.
$contentВозвращает содержимое файла.
$dateВозвращает текущую дату и время в формате YYYY-MM-DD hh:mm:ss.sss.
$emptyВозвращает пустую строку.
$envВозвращает значение переменной окружения.
$eqВозвращает значение на основе равенства двух значений.
$homedirВозвращает путь к домашнему каталогу текущего пользователя.
$jsonСоздает JSON из строкового представления JavaScript объекта или примитива.
$maxВозвращает максимальное значение из переданных параметров.
$minВозвращает минимальное значение из переданных параметров.
$neВозвращает значение на основе неравенства двух значений.
$pathВозвращает вычисленный относительно текущего каталога путь к файлу или каталогу.
$platformВозвращает название платформы операционной системы.
$randomВозвращает случайное целое число в заданном диапазоне.
$timestampВозвращает текущее время в миллисекундах с начала эпохи Unix.
$tmpdirВозвращает путь к временному каталогу.
$usernameВозвращает имя текущего пользователя.
$uuidВозвращает уникальный идентификатор UUID v4.
$unwrapСлужебный макрос, удаляющий кавычки вокруг значения.

TIP

Подробнее о параметрах макросов см. в справочнике.

Примеры

Подстановка значения переменной окружения.

Если переменная окружения не установлена, можно указать значение по умолчанию.

json
{
  "env": "$env(USER)",
  "envWithDefault": "$env(USER, default)"
}

Подстановка текущей даты и времени

json
{
  "date": "$date()"
}

Подстановка пути к файлу относительно текущего каталога

json
{
  "path": "$path(../file.txt)"
}

Условная подстановка значения.

Если пользователь user1, то значение file1.txt, иначе file2.txt

json
{
  "tempFile": "$eq($env(USER), user1, file1.txt, file2.txt)"
}

Генерация уникального идентификатора

json
{
  "requestId": "$uuid()"
}

Получение информации о системе

json
{
  "platform": "$platform()",
  "user": "$username()"
}

Чтение содержимого файла

json
{
  "config": "$content(config.txt)"
}

Генерация случайного числа

Случайное число от 0 до максимального безопасного целого числа:

json
{
  "random": "$random()"
}

Случайное число в диапазоне от 1 до 100:

json
{
  "randomInRange": "$random(1, 100)"
}

Математические операции

Минимальное и максимальное значение из набора чисел:

json
{
  "minValue": "$min(10, 5, 20, 3)",
  "maxValue": "$max(10, 5, 20, 3)"
}

Кодирование и декодирование base64

json
{
  "encoded": "$base64encode(Hello World)",
  "decoded": "$base64decode(SGVsbG8gV29ybGQ=)"
}

Создание JSON структур

json
{
  "array": "$json([1, 2, 3])",
  "object": "$json({key: 'value'})"
}

Удаление кавычек

В конфигурации проекта могут использоваться не только строковые значения (например, числа, булевые значения, массивы и объекты).

При попытке подстановки таких значений из макроса, JSON станет невалидным.

text
{
  "timestamp": $timestamp()
}

В случае сохранения валидного JSON, значение останется строковым.

json
{
  "timestamp": "$timestamp()"
}

Для таких случаев можно использовать служебный макрос $unwrap:

json
{
  "timestamp": "$unwrap($timestamp())"
}

В результате его выполнения получим числовое значение без кавычек:

json
{
  "timestamp": 1787654321000
}