Конфигурация

Обзор настроек и опций.

Plugify использует три основных файла конфигурации для управления своим поведением, плагинами и языковыми модулями: plugify.pconfig, *.pplugin и *.pmodule. Ниже приведено подробное объяснение каждого файла и его опций конфигурации.

Манифест конфигурации

Файл plugify.pconfig требуется для тестового приложения plug, чтобы найти каталог plugify и настроить его поведение. Он должен быть размещен в корневом каталоге и содержать следующие поля:

plugify.pconfig
{
  "$schema": "https://raw.githubusercontent.com/untrustedmodders/plugify/refs/heads/main/schemas/config.schema.json",
  "paths": {
    "baseDir": "",
    "extensionsDir": "extensions",
    "configsDir": "configs",
    "dataDir": "data",
    "logsDir": "logs",
    "cacheDir": "cache"
  },
  "loading": {
    "preferOwnSymbols": false,
    "maxConcurrentLoads": 4,
    "loadTimeout": 500,
    "exportTimeout": 100,
    "startTimeout": 250
  },
  "security": {
    "whitelistedExtensions": [],
    "blacklistedExtensions": [],
    "excludedDirs": []
  },
  "logging": {
    "severity": "Debug",
    "printReport": false,
    "printLoadOrder": false,
    "printDependencyGraph": false,
    "printDigraphDot": false,
    "exportDigraphDot": ""
  }
}

Опции конфигурации:

Пути
  • baseDir: Указывает базовую директорию Plugify. Все остальные относительные пути разрешаются относительно этой директории.
  • extensionsDir: Директория, в которой находятся плагины и языковые модули (по умолчанию: extensions).
  • configsDir: Директория для конфигурационных файлов расширений (по умолчанию: configs). Относительные пути разрешаются относительно baseDir.
  • dataDir: Директория для файлов данных расширений (по умолчанию: data). Относительные пути разрешаются относительно baseDir.
  • logsDir: Директория для файлов журналов (по умолчанию: logs). Относительные пути разрешаются относительно baseDir.
  • cacheDir: Директория для кэшированных файлов (по умолчанию: cache). Относительные пути разрешаются относительно baseDir.
Загрузка
  • preferOwnSymbols: Определяет, должны ли модули отдавать предпочтение собственным символам перед символами, предоставляемыми общими библиотеками (по умолчанию: false).
  • maxConcurrentLoads: Максимальное количество модулей, которые могут загружаться одновременно (по умолчанию: 4).
  • loadTimeout: Максимальное время, отведённое на загрузку модуля, в миллисекундах (по умолчанию: 500).
  • exportTimeout: Максимальное время, отведённое на разрешение экспортов модуля, в миллисекундах (по умолчанию: 100).
  • startTimeout: Максимальное время, отведённое на запуск модуля, в миллисекундах (по умолчанию: 250).
Безопасность
  • whitelistedExtensions: Список расширений, которым явно разрешено загружаться.
  • blacklistedExtensions: Список расширений, загрузка которых явно запрещена.
  • excludedDirs: Список директорий, исключённых из поиска расширений.
Логирование
  • severity: Определяет минимальный уровень логирования. Поддерживаемые значения: none, fatal, error, warning, info, debug и trace.
  • printReport: Выводит отчёт о загрузке модулей (по умолчанию: false).
  • printLoadOrder: Выводит порядок загрузки модулей (по умолчанию: false).
  • printDependencyGraph: Выводит граф зависимостей модулей (по умолчанию: false).
  • printDigraphDot: Выводит граф зависимостей в формате DOT (по умолчанию: false).

Манифест плагина

Файл .pplugin определяет конфигурацию для конкретного плагина. Ниже приведен пример:

*.pplugin
{
  "version": "1.0.0",
  "name": "sample_plugin",
  "description": "Это пример плагина.",
  "author": "untrustedmodders",
  "website": "https://github.com/untrustedmodders/",
  "license": "MIT",
  "entry": "bin/sample_plugin",
  "platforms": [],
  "language": "cpp",
  "dependencies": [],
  "methods": [],
  "classes": []
}

Опции конфигурации:

  • version: Семантическая версия плагина.
  • name: Удобное для пользователя имя плагина.
  • description: Краткое описание или обзор плагина.
  • author: Создатель или автор плагина.
  • website: URL-адрес, ссылающийся на профиль или информацию о создателе.
  • license: Лицензия плагина.
  • entry: Точка входа или главный исполняемый файл плагина, указанный как bin/sample_plugin. (Зависит от языкового модуля.)
  • platforms: Массив, перечисляющий поддерживаемые плагином платформы. (В этом примере пустой.)
  • language: Информация об используемом модуле языка программирования. В данном случае это "cpp" (C++).
  • dependencies: Список ссылок на плагины, указывающий зависимости, необходимые для работы плагина. Это поле имеет решающее значение для топологической сортировки, чтобы загружать плагины в правильном порядке инициализации.
  • methods: Массив, описывающий функции/методы, предоставляемые плагином.
  • classes: Массив, описывающий классы, предоставляемые плагином.

Манифест модуля

Файл .pmodule определяет конфигурацию для языкового модуля. Ниже приведен пример:

*.pmodule
{
    "version": "1.0.0",
    "name": "cpp_module",
    "language": "cpp",
    "description": "Добавляет поддержку плагинов на C++",
    "author": "untrustedmodders",
    "website": "https://github.com/untrustedmodders/",
    "license": "MIT",
    "platforms": []
}

Опции конфигурации:

  • version: Семантическая версия языкового модуля.
  • name: Удобное для пользователя имя языкового модуля.
  • language: Язык программирования, поддерживаемый этим модулем (например, "cpp" для C++).
  • description: Краткое описание или обзор языкового модуля.
  • author: Создатель или автор языкового модуля.
  • website: URL-адрес, ссылающийся на профиль или информацию о создателе.
  • license: Лицензия языкового модуля.
  • platforms: Массив, перечисляющий поддерживаемые языковым модулем платформы.

Примечания:

  • Убедитесь, что все файлы конфигурации являются валидным JSON и соответствуют схеме, предоставленной Plugify.
  • Используйте поле $schema для проверки ваших файлов конфигурации на соответствие официальной схеме.