An open API service indexing awesome lists of open source software.

https://github.com/oscript-library/configor

Библиотека для работы с конфигурационными файлами в формате json, yaml
https://github.com/oscript-library/configor

hacktoberfest

Last synced: 22 days ago
JSON representation

Библиотека для работы с конфигурационными файлами в формате json, yaml

Awesome Lists containing this project

README

          

# configor

[![License](https://img.shields.io/github/license/oscript-library/configor?style=badge)](https://github.com/oscript-library/configor/blob/master/LICENSE)
[![Last release](https://img.shields.io/github/v/release/oscript-library/configor?include_prereleases&label=last%20release&style=badge)](https://github.com/oscript-library/configor/releases/latest)
[![GitHub issues](https://img.shields.io/github/issues-raw/oscript-library/configor?style=badge)](https://github.com/oscript-library/configor/issues)
[![GitHub All Releases](https://img.shields.io/github/downloads/oscript-library/configor/total?style=flat-square)](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`.