Тема
Макросы
Макрос - это специальная конструкция, которая позволяет динамически подставлять значения в конфигурации проекта.
Описание
Макрос может использоваться в любой части конфигурации проекта и позволяет динамически подставлять:
- переменные окружения
- дату и время
- пути к файлам и каталогам
- значения, зависящие от условий
Формат
Макрос представляет собой специальную синтаксическую конструкцию, четко определенного формата.
Макрос начинается с символа $, затем указывается имя макроса и параметры (разделенные запятыми) в скобках.
В качестве параметров макроса можно указывать другие макросы.
$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
}