Перейти к содержанию

Правила

Каждый файл функции проверяется при запуске бота и при запуске validate. Если один файл неправильный, ничего не запускается, поэтому ошибки выявляются еще до того, как ваше меню будет опубликовано.

Какие файлы читаются

  • Читаются только файлы, заканчивающиеся на .yaml или .yml. Все остальное игнорируется.
  • Подпапки вашего function_directory тоже читаются.
  • Один файл должен описывать ровно одну функцию.

Именование

  • name является обязательным и должен соответствовать ^[A-Za-z0-9._-]+$ — буквы, цифры, ., - и _. Никаких пробелов.
  • Имена уникальны, регистр игнорируется. Deploy и deploy конфликтуют, даже если они находятся в разных файлах.
  • Зарезервированные имена запрещены. Вы не можете назвать функцию command или script; они принадлежат к встроенным функциям.

Команда

  • Необходим run. Напишите команду с помощью заполнителей, куда идут значения.
  • Синтаксис заполнителя проверяется при проверке конфигурации, поэтому ошибка вроде незакрытого {{ обнаруживается заранее.

Параметры

  • Для каждого параметра требуется name, соответствующий тому же правилу символов, что и имя функции.
  • type должен быть string, int или bool. Если его оставить, это означает string. Проверяются значения и настройки по умолчанию, объявленные как int или bool.
  • Имя параметра не может быть настройкой кнопки: name, type, icon, id, function, confirm, timeout, workdir, env, columns или items. Допускаются имена command, path и args.
  • Каждое значение, записанное на кнопке, должно соответствовать объявленному ею параметру. Функция кнопки.

Поле функции run может использовать только заполнители для объявленных параметров. Необъявленный заполнитель является ошибкой.

Опечатки — это ошибки

Неизвестные ключи отклонены. Опечатка типа requird: вместо required:. останавливает проверку, а не молча игнорируется.

Этот файл не загружается

functions/broken.yaml
name: broken
run: "echo {{.args}}"
params:
  - name: args
    requird: true      # отклонено: неизвестный ключ

Обязательные значения и значения по умолчанию

  • обязательный параметр без значения приводит к сбою проверки с сообщением. например required parameter "args" for function "greet" is missing.
  • Значение, которое присутствует, но пусто, считается отсутствующим.
  • Необязательный параметр возвращается к своему default. Без default это становится пустым, поэтому необязательные части команды исключаются.

Обязательно и необязательно в одном файле

functions/tail-log.yaml
name: tail-log
run: "tail -n {{.args}} {{.path}}"
params:
  - name: path
    required: true
    description: Log file path
  - name: args
    default: "200"
    description: Number of lines

Кнопка, которая устанавливает только path, запускает tail -n 200 /var/log/app.log.

Похожие