-
Notifications
You must be signed in to change notification settings - Fork 11
Добавлены новые провайдеры настроек #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,77 @@ | ||
| #Использовать logos | ||
|
|
||
| Перем Лог; | ||
| Перем Префикс; | ||
|
|
||
| Процедура ПриСозданииОбъекта(ПрефиксПеременныхСреды = "") | ||
| Префикс = ПрефиксПеременныхСреды; | ||
| Лог = Логирование.ПолучитьЛог("oscript.lib.configor.env"); | ||
| КонецПроцедуры | ||
|
|
||
| #Область ПрограммныйИнтерфейс | ||
|
|
||
| // Возвращает приоритет провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Число - текущий приоритет провайдера | ||
| // | ||
| Функция Приоритет() Экспорт | ||
| Возврат 2; | ||
| КонецФункции | ||
|
|
||
| // Возвращает идентификатор провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - текущий идентификатор провайдера | ||
| // | ||
| Функция Идентификатор() Экспорт | ||
| Возврат "env"; | ||
| КонецФункции | ||
|
|
||
| // Возвращает тип провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - текущий тип провайдера | ||
| // | ||
| Функция ТипПровайдера() Экспорт | ||
| Возврат "env"; | ||
| КонецФункции | ||
|
|
||
| // Выполняет чтение параметров для провайдера | ||
| // | ||
| // Параметры: | ||
| // НастройкиПровайдера - Структура - структура настроек провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Соответствие - результат чтения провайдера | ||
| // | ||
| Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт | ||
|
|
||
| Лог.Отладка("Выполняю чтение параметров переменных среды для префикса <%1>", Префикс); | ||
|
|
||
| ПеременныеСреды = ПеременныеСреды(); | ||
|
|
||
| Если ПустаяСтрока(Префикс) Тогда | ||
| Возврат ПеременныеСреды; | ||
| КонецЕсли; | ||
|
|
||
| ПрочитанныеПараметры = Новый Соответствие; | ||
|
|
||
| Для каждого ПеременнаяСреды Из ПеременныеСреды Цикл | ||
|
|
||
| Если СтрНачинаетсяС(ПеременнаяСреды.Ключ, Префикс) Тогда | ||
|
|
||
| ПрочитанныеПараметры.Вставить( | ||
| Прав(ПеременнаяСреды.Ключ, СтрДлина(ПеременнаяСреды.Ключ) - СтрДлина(Префикс)), | ||
| ПеременнаяСреды.Значение | ||
| ); | ||
|
|
||
| КонецЕсли; | ||
|
|
||
| КонецЦикла; | ||
|
|
||
| Возврат ПрочитанныеПараметры; | ||
|
|
||
| КонецФункции | ||
|
|
||
| #КонецОбласти |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,111 @@ | ||
| #Использовать logos | ||
|
|
||
| Перем Лог; | ||
|
|
||
| #Область ПрограммныйИнтерфейс | ||
|
|
||
| // Возвращает приоритет провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Число - текущий приоритет провайдера | ||
| // | ||
| Функция Приоритет() Экспорт | ||
| Возврат 1; | ||
| КонецФункции | ||
|
|
||
| // Возвращает идентификатор провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - текущий идентификатор провайдера | ||
| // | ||
| Функция Идентификатор() Экспорт | ||
| Возврат "ini"; | ||
| КонецФункции | ||
|
|
||
| // Возвращает тип провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - текущий тип провайдера | ||
| // | ||
| Функция ТипПровайдера() Экспорт | ||
| Возврат "file"; | ||
| КонецФункции | ||
|
|
||
| // Возвращает расширения файлов по умолчанию | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - расширения файлов по умолчанию | ||
| // | ||
| Функция РасширенияФайлов() Экспорт | ||
| Возврат "ini"; | ||
| КонецФункции | ||
|
|
||
| // Выполняет чтение параметров для провайдера | ||
| // | ||
| // Параметры: | ||
| // НастройкиПровайдера - Структура - структура настроек провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Соответствие - результат чтения провайдера | ||
| // | ||
| Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт | ||
|
|
||
| ПрочитанныеПараметры = Новый Соответствие; | ||
|
|
||
| ФайлПараметров = Новый Файл(НастройкиПровайдера.ФайлПараметров); | ||
|
|
||
| Если Не ФайлПараметров.Существует() Тогда | ||
| Лог.Отладка("Не найден файл параметров <%1>", ФайлПараметров.ПолноеИмя); | ||
| Возврат ПрочитанныеПараметры; | ||
| КонецЕсли; | ||
|
|
||
| Лог.Отладка("Выполняю чтение файла параметров <%1>", ФайлПараметров.ПолноеИмя); | ||
| ПрочитанныеПараметры = Прочитать(ФайлПараметров.ПолноеИмя); | ||
|
|
||
| Возврат ПрочитанныеПараметры; | ||
|
|
||
| КонецФункции | ||
|
|
||
| #КонецОбласти | ||
|
|
||
| // Выполнить чтение настроек из файла | ||
| // | ||
| // Параметры: | ||
| // ПутьКФайлу - Cтрока - путь к файлу настроек | ||
| // Возвращаемое значение: | ||
| // Соответствие - итоговые параметры | ||
| // | ||
| Функция Прочитать(Знач ПутьКФайлу) | ||
|
|
||
| НастройкиИзФайла = Новый Соответствие; | ||
|
|
||
| ТД = Новый ТекстовыйДокумент(); | ||
| ТД.Прочитать(ПутьКФайлу); | ||
|
|
||
| Для Сч = 1 По ТД.КоличествоСтрок() Цикл | ||
|
|
||
| СтрокаНастроек = ТД.ПолучитьСтроку(Сч); | ||
|
|
||
| Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда | ||
| Продолжить; | ||
| КонецЕсли; | ||
|
|
||
| Поз = СтрНайти(СтрокаНастроек, "="); | ||
| Если Поз = 0 Тогда | ||
| Продолжить; | ||
| КонецЕсли; | ||
|
|
||
| Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1)); | ||
| Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1)); | ||
|
|
||
| НастройкиИзФайла.Вставить(Ключ, Значение); | ||
|
|
||
| КонецЦикла; | ||
|
|
||
| Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу); | ||
|
|
||
| Возврат НастройкиИзФайла; | ||
|
|
||
| КонецФункции // Прочитать | ||
|
|
||
| Лог = Логирование.ПолучитьЛог("oscript.lib.configor.ini"); | ||
63 changes: 63 additions & 0 deletions
63
src/Классы/internal/Классы/ПровайдерПараметровСоответствие.os
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| #Использовать logos | ||
|
|
||
| Перем Лог; | ||
| Перем мПараметры; | ||
|
|
||
| Процедура ПриСозданииОбъекта(Параметры) | ||
|
|
||
| Если ТипЗнч(Параметры) <> Тип("Соответствие") Тогда | ||
| ВызватьИсключение | ||
| "Для провайдера параметров Соответствие, источником параметров может быть только соответствие"; | ||
| КонецЕсли; | ||
|
|
||
| мПараметры = Параметры; | ||
| Лог = Логирование.ПолучитьЛог("oscript.lib.configor.map"); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| #Область ПрограммныйИнтерфейс | ||
|
|
||
| // Возвращает приоритет провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Число - текущий приоритет провайдера | ||
| // | ||
| Функция Приоритет() Экспорт | ||
| Возврат 3; | ||
| КонецФункции | ||
|
|
||
| // Возвращает идентификатор провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - текущий идентификатор провайдера | ||
| // | ||
| Функция Идентификатор() Экспорт | ||
| Возврат "map"; | ||
| КонецФункции | ||
|
|
||
| // Возвращает тип провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Строка - текущий тип провайдера | ||
| // | ||
| Функция ТипПровайдера() Экспорт | ||
| Возврат "memory"; | ||
| КонецФункции | ||
|
|
||
| // Выполняет чтение параметров для провайдера | ||
| // | ||
| // Параметры: | ||
| // НастройкиПровайдера - Структура - структура настроек провайдера | ||
| // | ||
| // Возвращаемое значение: | ||
| // Соответствие - результат чтения провайдера | ||
| // | ||
| Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт | ||
|
|
||
| Лог.Отладка("Считываю параметры из соответствия"); | ||
|
|
||
| Возврат мПараметры; | ||
|
|
||
| КонецФункции | ||
|
|
||
| #КонецОбласти |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| owner.contact.email=mail.ru | ||
| owner.contact.tel=77777777 | ||
|
|
||
| admin.contact.email=admin.ru | ||
|
|
||
| #person.address=home |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| #использовать "../src/" | ||
| #Использовать asserts | ||
|
|
||
| &Тест | ||
| Процедура ПроверитьПолучениеПеременныхСредыБезПрефикса() Экспорт | ||
|
|
||
| // Дано | ||
|
|
||
| УстановитьПеременнуюСреды("TestConfigorEnv", "ТестЗначение", РасположениеПеременнойСреды.Процесс); | ||
|
|
||
| // Когда | ||
|
|
||
| МенеджерПараметров = Новый МенеджерПараметров(); | ||
|
|
||
| МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровENV()); | ||
|
|
||
| МенеджерПараметров.Прочитать(); | ||
|
|
||
| // Тогда | ||
|
|
||
| Ожидаем.Что(МенеджерПараметров.Параметр("TestConfigorEnv")).Равно("ТестЗначение"); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| &Тест | ||
| Процедура ПроверитьПолучениеПеременныхСредыСПрефиксом() Экспорт | ||
|
|
||
| // Дано | ||
|
|
||
| УстановитьПеременнуюСреды("Test_ConfigorEnv", "ТестЗначение", РасположениеПеременнойСреды.Процесс); | ||
|
|
||
| // Когда | ||
|
|
||
| МенеджерПараметров = Новый МенеджерПараметров(); | ||
|
|
||
| МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровENV("Test_")); | ||
|
|
||
| МенеджерПараметров.Прочитать(); | ||
|
|
||
| // Тогда | ||
|
|
||
| Ожидаем.Что(МенеджерПараметров.Параметр("ConfigorEnv")).Равно("ТестЗначение"); | ||
|
|
||
| КонецПроцедуры |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| #использовать "../src/" | ||
| #Использовать asserts | ||
|
|
||
| &Тест | ||
| Процедура ПроверитьПолучениеПараметров() Экспорт | ||
|
|
||
| // Дано | ||
|
|
||
| МенеджерПараметров = Новый МенеджерПараметров(); | ||
| МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровINI()); | ||
| МенеджерПараметров.УстановитьФайлПараметров(ОбъединитьПути(ТекущийСценарий().Каталог, "fixtures", "test-config.ini")); | ||
| МенеджерПараметров.Прочитать(); | ||
|
|
||
| // Когда | ||
|
|
||
| МенеджерПараметров.Прочитать(); | ||
|
|
||
| // Тогда | ||
|
|
||
| Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.email")).Равно("mail.ru"); | ||
| Ожидаем.Что(МенеджерПараметров.Параметр("owner.contact.tel")).Равно("77777777"); | ||
| Ожидаем.Что(МенеджерПараметров.Параметр("admin.contact.email")).Равно("admin.ru"); | ||
| Ожидаем.Что(МенеджерПараметров.Параметр("person.address")).ЭтоНеопределено(); | ||
|
|
||
| КонецПроцедуры |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| #использовать "../src/" | ||
| #Использовать asserts | ||
|
|
||
| &Тест | ||
| Процедура ПроверитьПолучениеПараметровИзСоответствия() Экспорт | ||
|
|
||
| // Дано | ||
|
|
||
| Массив = Новый Массив; | ||
| Массив.Добавить(2); | ||
|
|
||
| Соответствие = Новый Соответствие; | ||
| Соответствие.Вставить("Тест1", 1); | ||
| Соответствие.Вставить("Тест2", Массив); | ||
|
|
||
| // Когда | ||
|
|
||
| МенеджерПараметров = Новый МенеджерПараметров(); | ||
|
|
||
| МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровСоответствие(Соответствие)); | ||
|
|
||
| МенеджерПараметров.Прочитать(); | ||
|
|
||
| // Тогда | ||
|
|
||
| Ожидаем.Что(МенеджерПараметров.Параметр("Тест1")).Равно(1); | ||
| Ожидаем.Что(МенеджерПараметров.Параметр("Тест2")[0]).Равно(2); | ||
|
|
||
| КонецПроцедуры | ||
|
|
||
| &Тест | ||
| Процедура ПроверитьОшибкуПриПередачиДругогоИсточника() Экспорт | ||
|
|
||
| БылоИсключение = Ложь; | ||
|
|
||
| Попытка | ||
| А = Новый ПровайдерПараметровСоответствие(Новый Массив); | ||
| Исключение | ||
|
|
||
| БылоИсключение = Истина; | ||
|
|
||
| Ожидаем.Что(ИнформацияОбОшибке().Описание) | ||
| .Содержит("Для провайдера параметров Соответствие, источником параметров может быть только соответствие"); | ||
| КонецПопытки; | ||
|
|
||
| Ожидаем.Что(БылоИсключение).ЭтоИстина(); | ||
|
|
||
| КонецПроцедуры |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Норм, что и там и там приоритет 1? Может у энвов его понизить/повысить относительно файлов?