Построение, изменение и экспорт конфигурации OneScript
Пакет лежит в основном пуле хаба, а opm знает этот хаб по умолчанию: короткой формы достаточно.
opm install engine-configСкачанный файл ставится командой opm install -f <файл> — сеть для этого уже не нужна.
Описание
engine-config
engine-config - библиотека для построения, изменения и экспорта конфигурации OneScript.
Она может объединять настройки из oscript.cfg и OSCRIPT_CONFIG, изменять их в памяти, экспортировать в CFG
или окружение и выполнять статический поиск каталогов библиотек.
Возможности
- Построение конфигурации из файлов
oscript.cfgи переменной окруженияOSCRIPT_CONFIGс объединением настроек в заданном порядке. - Программное управление настройками: чтение, изменение, удаление и дополнение конфигурации.
- Экспорт в CFG с поддержкой абсолютных и относительных путей библиотек.
- Экспорт в
OSCRIPT_CONFIGс возможностью получить строковое представление или установить переменную окружения текущего процесса. - Поиск библиотек по каталогам
lib.additionalиlib.system, включая поиск первого или всех совпадений.
Требования
- OneScript 2.0.0 или новее.
Установка
Установите пакет из OPM:
opm install engine-config
Для проекта с packagedef добавьте зависимость:
Описание.ЗависитОт("engine-config");
Подключите библиотеку в сценарии:
#Использовать engine-config
Быстрый старт
Постройте конфигурацию из стандартных источников OneScript:
#Использовать engine-config
Конфигурация = ФабрикаКонфигурацийИнтерпретатора.СоздатьИзСтандартныхИсточников();
Источники применяются в порядке добавления: каждый следующий источник перекрывает предыдущий для одноименных настроек:
<КаталогДвижка>/bin/oscript.cfg;oscript.cfgрядом с точкой входа;OSCRIPT_CONFIG.
Отсутствующие CFG из стандартных источников пропускаются. Построение конфигурации не изменяет файлы, текущий каталог или переменные окружения процесса. Дополнительные источники можно задать явно:
Конфигурация = Новый ПостроительКонфигурацииИнтерпретатора()
.ДобавитьФайлКонфигурации("config/base.cfg")
.ДобавитьНастройкиОкружения("lib.additional=./lib", ТекущийКаталог())
.Построить();
Подробнее: Построение конфигурации.
Изменение и экспорт конфигурации
Конфигурация = Новый КонфигурацияИнтерпретатора();
Конфигурация.УстановитьРежимЯвныхИмпортов("warn");
Конфигурация.УстановитьСистемныйКаталогБиблиотек("./lib/system");
Конфигурация.ДобавитьДополнительныйКаталогБиблиотек("./lib/project");
РежимИмпортов = Конфигурация.ПолучитьРежимЯвныхИмпортов();
Ключи регистронезависимы. Повторная установка заменяет значение и сохраняет последнее написание ключа.
Запись полностью заменяет целевой файл каноническим CFG: UTF-8 без BOM, окончания строк LF, пары
Ключ=Значение в стабильном порядке. Каталог назначения должен существовать.
Конфигурация.ЗаписатьВФайл(
"build/oscript.cfg",
ПреобразованияПутейКонфигурацииИнтерпретатора.ОтносительноФайла()
);
ВСтрокуОкружения() возвращает OSCRIPT_CONFIG с абсолютными библиотечными путями и не меняет процесс.
УстановитьВПеременнуюОкружения() формирует ту же строку и изменяет окружение текущего процесса:
СтрокаОкружения = Конфигурация.ВСтрокуОкружения();
Конфигурация.УстановитьВПеременнуюОкружения();
Подробнее: Изменение и экспорт конфигурации.
Поиск библиотек
Локатор = Новый ЛокаторБиблиотекПоКонфигурации(Конфигурация);
Каталоги = Локатор.ПолучитьКаталогиПоиска();
КаталогБиблиотеки = Локатор.НайтиКаталогБиблиотеки("my-library");
ВсеКаталогиБиблиотеки = Локатор.НайтиВсеКаталогиБиблиотеки("my-library");
В конструктор можно передать одну конфигурацию или массив. Для каждой конфигурации сначала проверяются
дополнительные каталоги в исходном порядке, затем системный. Локатор фиксирует снимок библиотечных настроек при
создании. Можно получить первый найденный каталог или все совпадения в порядке поиска. Поиск не запускает
package-loader.os и не проверяет наличие исполняемого кода библиотеки.
Подробнее: Поиск библиотек.
Публичный API
| API | Назначение |
|---|---|
КонфигурацияИнтерпретатора |
Изменение и экспорт конфигурации |
ЛокаторБиблиотекПоКонфигурации |
Расчёт каталогов поиска и статический поиск библиотек |
ПостроительКонфигурацииИнтерпретатора |
Объединение CFG и окружения |
ФабрикаКонфигурацийИнтерпретатора |
Готовые конфигурации из типовых источников |
ПреобразованияПутейКонфигурацииИнтерпретатора |
Преобразования библиотечных путей при записи |
КодыОшибокКонфигурацииИнтерпретатора |
Стабильные машинные коды ошибок |
Полный обзор: документация API.
Разработка
# Установка зависимостей проекта
opm install -l --dev
# Запуск всех тестов
oneunit e
# Сборка OPM-пакета
opm build .