https://github.com/oscript-library/configor
Библиотека для работы с конфигурационными файлами в формате json, yaml
https://github.com/oscript-library/configor
hacktoberfest
Last synced: 22 days ago
JSON representation
Библиотека для работы с конфигурационными файлами в формате json, yaml
- Host: GitHub
- URL: https://github.com/oscript-library/configor
- Owner: oscript-library
- License: apache-2.0
- Created: 2018-01-20T08:08:09.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-02-05T10:33:19.000Z (12 months ago)
- Last Synced: 2025-02-05T11:29:54.590Z (12 months ago)
- Topics: hacktoberfest
- Language: 1C Enterprise
- Homepage:
- Size: 469 KB
- Stars: 14
- Watchers: 3
- Forks: 10
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# configor
[](https://github.com/oscript-library/configor/blob/master/LICENSE)
[](https://github.com/oscript-library/configor/releases/latest)
[](https://github.com/oscript-library/configor/issues)
[](https://github.com/oscript-library/configor/releases)
# Библиотека для работы с конфигурационными файлами в формате json, yaml
Данная библиотека позволяет работать с конфигурационными файлами с помощью предварительного описания требуемой конфигурации.
А так же без описания. Получение параметров по ключам вида `Настройки.Глобальные.НастройкиПрокси.Сервер`.
Обеспечивает подстановку значение друг в друга и чтение вложенных файлов настроек
## Мотивация
Сравнительная таблица
Библиотека от @Stepa86 [ReadParams](https://github.com/Stepa86/ReadParams)
Библиотека от @artbear [Params](https://github.com/artbear/params)
| | *Configor* | ReadParams | Params |
|------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|------------|--------|
| Чтение файлов в формате json | ✓ | ✓ | ✓ |
| Чтение файлов в формате yaml/yml | ✓ | | |
| Чтение файлов в произвольном формате (свой провайдер чтения) | ✓ | | |
| Выполнение подстановок при чтении | ✓ | ✓ | ✓ |
| Чтение переменных окружения | (через произвольный провайдер) | ✓ | ✓ |
| Чтение параметров командной строки | (через произвольный провайдер) | | ✓ |
| Запись параметров в прочитанный файл | (в разработке) | | |
| Встроенный конструктор параметров | ✓ | | |
| Выгрузка результата чтения в класс параметров | ✓ | | |
| Поддержка деревовидных структур параметров `Настройки.НастройкиПрокси.Пользователь` и `Настройки.НастройкиПрокси.Сервара.0.АдресСервера` | ✓ | | |
| Доступ к вложенным параметра (в том числе к элементам массива) в формате `ДополнительныеХабы.0.Сервер, ДополнительныеХабы.1.Сервер` | ✓ | | |
| Авто приоритеты - настройки в коде, в файле, в окруж., ком.строке | ✓ (на уровне приоритетов провайдеров) | | ✓ |
| Безопасный доступ к параметрам (возвращает значение по умолчанию или неопределенно) | ✓ | ✓ | ✓ |
## Пример работы:
* Чтение параметров из файла
```bsl
// Пример файла настроек
//{
// 'Настройки': {
// "Глобальные": {
// "НастройкиПрокси":{
// "Сервер": "localhost",
// "Порт": "8080"
// }
// }
//
// }
//}
МенеджерПараметров = Новый МенеджерПараметров();
МенеджерПараметров.УстановитьФайлПараметров("Путь/К/Файлу");
МенеджерПараметров.Прочитать();
ПроксиСервер = МенеджерПараметров.Параметр("Настройки.Глобальные.НастройкиПрокси.Сервер")
Сообщить(ПроксиСервер);
```
* Чтение параметров из vault
```bsl
НастройкиVault = Новый Структура;
НастройкиVault.Вставить("Адрес", "https://vault.server.local");
НастройкиVault.Вставить("Токен", ПолучитьПеременнуюСреды("VAULT_TOKEN"));
НастройкиVault.Вставить("Запрос", "v1/my_secret_store/super_secret");
МенеджерПараметров = Новый МенеджерПараметров();
МенеджерПараметров.ИспользоватьПровайдерVAULT();
МенеджерПараметров.УстановитьНастройкиVault(НастройкиVault);
МенеджерПараметров.Прочитать();
ПроксиСервер = МенеджерПараметров.Параметр("Настройки.Глобальные.НастройкиПрокси.Сервер")
Сообщить(ПроксиСервер);
```
* Чтения параметров через конструктор параметров
Класс "ПараметрыПриложения"
```bsl
Перем мПараметры;
Функция Параметры() Экспорт
Возврат мПараметры;
КонецФункции
Процедура УстановитьПараметры(Знач ВходящиеПараметры) Экспорт
мПараметры = ВходящиеПараметры;
КонецПроцедуры
Процедура ОписаниеПараметров(Знач Конструктор) Экспорт
НастройкиПрокси = Конструктор.НовыеПараметры("ПараметрСоответствиеСтруктуры")
.ПолеСтрока("Сервер")
.ПолеСтрока("Порт")
;
Настройки = Конструктор.НовыеПараметры("Настройки")
.ПолеОбъект("НастройкиПрокси", НастройкиПрокси)
;
Конструктор.ПолеСтрока("Версия version")
.ПолеОбъект("Настройки settings", Настройки)
;
КонецПроцедуры
```
```bsl
МенеджерПараметров = Новый МенеджерПараметров()
МенеджерПараметров.КонструкторПараметров(ПараметрыПриложения);
МенеджерПараметров.Прочитать();
ПроксиСервер = МенеджерПараметров.Параметр("Настройки.НастройкиПрокси.Сервер")
ПроксиСерверИзПараметровПриложения = ПараметрыПриложения.Параметры().Настройки.НастройкиПрокси.Сервер;
Сообщить(ПроксиСерверИзПараметровПриложения);
```
Так же описание функциональности содержится в папке `tests`. В прилагающихся `*.os` можно подсмотреть больше примеров из тестов.
## Установка
Для установки необходимо:
* Скачать файл configor.ospx из раздела [releases](https://github.com/khorevaa/configor/releases)
* Воспользоваться командой:
```
opm install -f <ПутьКФайлу>
```
или установить с хаба пакетов
```
opm install configor
```
## Базовые принципы работы с классами библиотеки
*Документация в разработке*
## Публичный интерфейс
[Документация публичного интерфейса](docs/README.md)
## Доработка
Доработка проводится по git-flow. Жду ваших PR.
## Лицензия
Смотри файл `LICENSE`.