Skip to content

Commit

Permalink
Новые провайдеры для конфигора (#66)
Browse files Browse the repository at this point in the history
* Новые провайдеры для конфигора

* Обработка не переданных значений деталек

* Убран отладочный запуск теста

* Табопробелы

* Совет другого мастера

* Fix qf

* Документация и гашение диагностик в тестах

* +Дока

* Переопределение имени файла и каталога поиска файла с детальками

* Дока
  • Loading branch information
nixel2007 authored Oct 1, 2023
1 parent de55e35 commit 3fde615
Show file tree
Hide file tree
Showing 5 changed files with 175 additions and 8 deletions.
3 changes: 2 additions & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
.ВключитьФайл("LICENSE.md")
.ВключитьФайл("README.md")
.ЗависитОт("asserts", "1.4.0")
.ЗависитОт("configor", "0.7.1")
.ЗависитОт("configor", "0.8.1")
.ЗависитОт("logos", "1.4.0")
.ЗависитОт("fluent", "0.5.0")
.ЗависитОт("reflector", "0.7.1")
Expand All @@ -33,6 +33,7 @@
.ОпределяетКласс("ОпределениеАннотации", "src/Классы/ОпределениеАннотации.os")
.ОпределяетКласс("ПрилепляемаяЧастица", "src/Классы/ПрилепляемаяЧастица.os")
.ОпределяетКласс("Табакерка", "src/Классы/Табакерка.os")
.ОпределяетКласс("СоветДругогоМастера", "src/Классы/СоветДругогоМастера.os")
.ОпределяетМодуль("Осень", "src/Модули/Осень.os")
.ОпределяетМодуль("РаботаСАннотациями", "src/Модули/РаботаСАннотациями.os")
.ОпределяетМодуль("ТипыПрилепляемыхЖелудей", "src/Модули/ТипыПрилепляемыхЖелудей.os")
Expand Down
32 changes: 26 additions & 6 deletions src/Классы/Поделка.os
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,11 @@

КонецПроцедуры

Процедура ПриСозданииОбъекта()
Процедура ПриСозданииОбъекта(Знач СоветДругогоМастера = Неопределено)
Если СоветДругогоМастера = Неопределено Тогда
СоветДругогоМастера = Новый СоветДругогоМастера();
КонецЕсли;

РазворачивательАннотаций = Новый РазворачивательАннотаций(ЭтотОбъект);
ФабрикаЖелудей = Новый ФабрикаЖелудей(ЭтотОбъект, РазворачивательАннотаций);

Expand Down Expand Up @@ -363,15 +367,31 @@
Лог = Логирование.ПолучитьЛог("oscript.lib.autumn.application.context");

МенеджерПараметров = Новый МенеджерПараметров();
// TODO: Добавить провайдеры для переменных среды и аргументов командной строки
МенеджерПараметров.ИспользоватьПровайдерJSON();
МенеджерПараметров.ИспользоватьПровайдерYAML();

// TODO: Добавить провайдер аргументов командной строки
ПровайдерПараметровINI = Новый ПровайдерПараметровINI();
ПровайдерПараметровENV = Новый ПровайдерПараметровENV(
СоветДругогоМастера.ПрефиксПеременныхСреды()
);
ПровайдерПараметровСоответствие = Новый ПровайдерПараметровСоответствие(
СоветДругогоМастера.ЗначенияДеталек()
);

МенеджерПараметров.ИспользоватьПровайдерJSON(1);
МенеджерПараметров.ИспользоватьПровайдерYAML(1);
МенеджерПараметров.ДобавитьПровайдерПараметров(ПровайдерПараметровINI, 1);
МенеджерПараметров.ДобавитьПровайдерПараметров(ПровайдерПараметровENV, 2);
МенеджерПараметров.ДобавитьПровайдерПараметров(ПровайдерПараметровСоответствие, 3);

НастройкаФайловогоПровайдера = МенеджерПараметров.НастройкаПоискаФайла();

НастройкаФайловогоПровайдера.УстановитьСтандартныеКаталогиПоиска("src");
НастройкаФайловогоПровайдера.УстановитьСтандартныеКаталогиПоиска(
СоветДругогоМастера.ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек()
);

НастройкаФайловогоПровайдера.УстановитьИмяФайла("autumn-properties");
НастройкаФайловогоПровайдера.УстановитьИмяФайла(
СоветДругогоМастера.ИмяФайлаСоЗначениямиДеталек()
);

МенеджерПараметров.Прочитать();

Expand Down
111 changes: 111 additions & 0 deletions src/Классы/СоветДругогоМастера.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#Область ОписаниеПеременных

// Соответствие - Значения деталек в виде соответствия
// для последующей передачи в МенеджерПараметров.
//
Перем ЗначенияДеталек;

// Строка - префикс переменных среды, хранящих значения деталек.
//
Перем ПрефиксПеременныхСреды;

// Строка - имя файла (без расширения), в котором хранятся значения деталек.
//
Перем ИмяФайлаСоЗначениямиДеталек;

// Строка - Относительный путь к каталогу, где хранятся файл со значениями деталек.
//
Перем ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек;

#КонецОбласти

#Область ПрограммныйИнтерфейс

// Установить/получить значения деталек.
//
// Параметры:
// НовоеЗначение - Соответствие - устанавливаемые значения деталек.
//
// Возвращаемое значение:
// Соответствие - Текущее установленное значение.
//
Функция ЗначенияДеталек(НовоеЗначение = Неопределено) Экспорт

Если НовоеЗначение <> Неопределено Тогда
ЗначенияДеталек = НовоеЗначение;
КонецЕсли;

Возврат ЗначенияДеталек;

КонецФункции

// Установить/получить префикс переменных среды, хранящих значения деталек.
//
// Параметры:
// НовоеЗначение - Строка - устанавливаемый префикс переменных среды.
//
// Возвращаемое значение:
// Строка - Текущее установленное значение.
//
Функция ПрефиксПеременныхСреды(НовоеЗначение = Неопределено) Экспорт

Если НовоеЗначение <> Неопределено Тогда
ПрефиксПеременныхСреды = НовоеЗначение;
КонецЕсли;

Возврат ПрефиксПеременныхСреды;

КонецФункции

// Установить/получить имя файла (без расширения), в котором хранятся значения деталек.
//
// Параметры:
// НовоеЗначение - Строка - устанавливаемое имя файла.
//
// Возвращаемое значение:
// Строка - Текущее установленное значение.
//
Функция ИмяФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) Экспорт

Если НовоеЗначение <> Неопределено Тогда
ИмяФайлаСоЗначениямиДеталек = НовоеЗначение;
КонецЕсли;

Возврат ИмяФайлаСоЗначениямиДеталек;

КонецФункции

// Установить/получить относительный путь к каталогу, где хранятся файл со значениями деталек.
//
// Параметры:
// НовоеЗначение - Строка - устанавливаемый путь к каталогу.
//
// Возвращаемое значение:
// Строка - Текущее установленное значение.
//
Функция ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) Экспорт

Если НовоеЗначение <> Неопределено Тогда
ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек = НовоеЗначение;
КонецЕсли;

Возврат ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек;

КонецФункции

#КонецОбласти

#Область Инициализация

// Советы по созданию поделки, упакованные в объект.
//
Процедура ПриСозданииОбъекта()

ЗначенияДеталек = Новый Соответствие();
ПрефиксПеременныхСреды = "";
ИмяФайлаСоЗначениямиДеталек = "autumn-properties";
ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек = "src";

КонецПроцедуры

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// BSLLS:MissingVariablesDescription-off
// BSLLS:ExportVariables-off

&Деталька("Моя.Настройка")
Перем Деталька Экспорт;

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры
28 changes: 27 additions & 1 deletion tests/Поделка.os
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,32 @@

КонецПроцедуры

&Тест
Процедура ЗначениеДеталькиМожноПереопределить() Экспорт

// Дано
ЗначенияДеталек = Новый Соответствие();
Настройки = Новый Соответствие();

ЗначенияДеталек.Вставить("Моя", Настройки);
Настройки.Вставить("Настройка", "Переопределенное значение");

Совет = Новый СоветДругогоМастера();
Совет.ЗначенияДеталек(ЗначенияДеталек);

Поделка = Новый Поделка(Совет);
Поделка
.ДобавитьЖелудь(Тип("ЖелудьСДеталькойИзСоответствия"))
.ЗапуститьПриложение();

// Когда
Желудь = Поделка.НайтиЖелудь("ЖелудьСДеталькойИзСоответствия");

// Тогда
Ожидаем.Что(Желудь.Деталька, "Хитрая настройка не прочиталась").Равно("Переопределенное значение");

КонецПроцедуры

&Тест
Процедура НапильникПолучаетЖелудьЧерезКонструктор() Экспорт

Expand Down Expand Up @@ -1061,4 +1087,4 @@
Ожидаем.Что(Желудь.Массив[0]).Равно(1);
Ожидаем.Что(Желудь.Массив[1]).Равно("2");

КонецПроцедуры
КонецПроцедуры

0 comments on commit 3fde615

Please sign in to comment.