From 3fde615ad61865205eca308d87e09b89d7829cec Mon Sep 17 00:00:00 2001 From: Nikita Fedkin Date: Sun, 1 Oct 2023 12:26:25 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=B9=D0=B4=D0=B5=D1=80=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=20(#66)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Новые провайдеры для конфигора * Обработка не переданных значений деталек * Убран отладочный запуск теста * Табопробелы * Совет другого мастера * Fix qf * Документация и гашение диагностик в тестах * +Дока * Переопределение имени файла и каталога поиска файла с детальками * Дока --- packagedef | 3 +- ...20\264\320\265\320\273\320\272\320\260.os" | 32 ++++- ...21\201\321\202\320\265\321\200\320\260.os" | 111 ++++++++++++++++++ ...21\201\321\202\320\262\320\270\321\217.os" | 9 ++ ...20\264\320\265\320\273\320\272\320\260.os" | 28 ++++- 5 files changed, 175 insertions(+), 8 deletions(-) create mode 100644 "src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\262\320\265\321\202\320\224\321\200\321\203\320\263\320\276\320\263\320\276\320\234\320\260\321\201\321\202\320\265\321\200\320\260.os" create mode 100644 "tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\226\320\265\320\273\321\203\320\264\321\214\320\241\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\276\320\271\320\230\320\267\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217.os" diff --git a/packagedef b/packagedef index f40e1f2..ffb333c 100644 --- a/packagedef +++ b/packagedef @@ -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") @@ -33,6 +33,7 @@ .ОпределяетКласс("ОпределениеАннотации", "src/Классы/ОпределениеАннотации.os") .ОпределяетКласс("ПрилепляемаяЧастица", "src/Классы/ПрилепляемаяЧастица.os") .ОпределяетКласс("Табакерка", "src/Классы/Табакерка.os") + .ОпределяетКласс("СоветДругогоМастера", "src/Классы/СоветДругогоМастера.os") .ОпределяетМодуль("Осень", "src/Модули/Осень.os") .ОпределяетМодуль("РаботаСАннотациями", "src/Модули/РаботаСАннотациями.os") .ОпределяетМодуль("ТипыПрилепляемыхЖелудей", "src/Модули/ТипыПрилепляемыхЖелудей.os") diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" index 43645fe..4deae79 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" @@ -329,7 +329,11 @@ КонецПроцедуры -Процедура ПриСозданииОбъекта() +Процедура ПриСозданииОбъекта(Знач СоветДругогоМастера = Неопределено) + Если СоветДругогоМастера = Неопределено Тогда + СоветДругогоМастера = Новый СоветДругогоМастера(); + КонецЕсли; + РазворачивательАннотаций = Новый РазворачивательАннотаций(ЭтотОбъект); ФабрикаЖелудей = Новый ФабрикаЖелудей(ЭтотОбъект, РазворачивательАннотаций); @@ -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"); + НастройкаФайловогоПровайдера.УстановитьИмяФайла( + СоветДругогоМастера.ИмяФайлаСоЗначениямиДеталек() + ); МенеджерПараметров.Прочитать(); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\262\320\265\321\202\320\224\321\200\321\203\320\263\320\276\320\263\320\276\320\234\320\260\321\201\321\202\320\265\321\200\320\260.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\262\320\265\321\202\320\224\321\200\321\203\320\263\320\276\320\263\320\276\320\234\320\260\321\201\321\202\320\265\321\200\320\260.os" new file mode 100644 index 0000000..11e0c50 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\262\320\265\321\202\320\224\321\200\321\203\320\263\320\276\320\263\320\276\320\234\320\260\321\201\321\202\320\265\321\200\320\260.os" @@ -0,0 +1,111 @@ +#Область ОписаниеПеременных + +// Соответствие - Значения деталек в виде соответствия +// для последующей передачи в МенеджерПараметров. +// +Перем ЗначенияДеталек; + +// Строка - префикс переменных среды, хранящих значения деталек. +// +Перем ПрефиксПеременныхСреды; + +// Строка - имя файла (без расширения), в котором хранятся значения деталек. +// +Перем ИмяФайлаСоЗначениямиДеталек; + +// Строка - Относительный путь к каталогу, где хранятся файл со значениями деталек. +// +Перем ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Установить/получить значения деталек. +// +// Параметры: +// НовоеЗначение - Соответствие - устанавливаемые значения деталек. +// +// Возвращаемое значение: +// Соответствие - Текущее установленное значение. +// +Функция ЗначенияДеталек(НовоеЗначение = Неопределено) Экспорт + + Если НовоеЗначение <> Неопределено Тогда + ЗначенияДеталек = НовоеЗначение; + КонецЕсли; + + Возврат ЗначенияДеталек; + +КонецФункции + +// Установить/получить префикс переменных среды, хранящих значения деталек. +// +// Параметры: +// НовоеЗначение - Строка - устанавливаемый префикс переменных среды. +// +// Возвращаемое значение: +// Строка - Текущее установленное значение. +// +Функция ПрефиксПеременныхСреды(НовоеЗначение = Неопределено) Экспорт + + Если НовоеЗначение <> Неопределено Тогда + ПрефиксПеременныхСреды = НовоеЗначение; + КонецЕсли; + + Возврат ПрефиксПеременныхСреды; + +КонецФункции + +// Установить/получить имя файла (без расширения), в котором хранятся значения деталек. +// +// Параметры: +// НовоеЗначение - Строка - устанавливаемое имя файла. +// +// Возвращаемое значение: +// Строка - Текущее установленное значение. +// +Функция ИмяФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) Экспорт + + Если НовоеЗначение <> Неопределено Тогда + ИмяФайлаСоЗначениямиДеталек = НовоеЗначение; + КонецЕсли; + + Возврат ИмяФайлаСоЗначениямиДеталек; + +КонецФункции + +// Установить/получить относительный путь к каталогу, где хранятся файл со значениями деталек. +// +// Параметры: +// НовоеЗначение - Строка - устанавливаемый путь к каталогу. +// +// Возвращаемое значение: +// Строка - Текущее установленное значение. +// +Функция ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) Экспорт + + Если НовоеЗначение <> Неопределено Тогда + ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек = НовоеЗначение; + КонецЕсли; + + Возврат ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек; + +КонецФункции + +#КонецОбласти + +#Область Инициализация + +// Советы по созданию поделки, упакованные в объект. +// +Процедура ПриСозданииОбъекта() + + ЗначенияДеталек = Новый Соответствие(); + ПрефиксПеременныхСреды = ""; + ИмяФайлаСоЗначениямиДеталек = "autumn-properties"; + ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек = "src"; + +КонецПроцедуры + +#КонецОбласти diff --git "a/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\226\320\265\320\273\321\203\320\264\321\214\320\241\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\276\320\271\320\230\320\267\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217.os" "b/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\226\320\265\320\273\321\203\320\264\321\214\320\241\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\276\320\271\320\230\320\267\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217.os" new file mode 100644 index 0000000..b61946b --- /dev/null +++ "b/tests/\320\232\320\273\320\260\321\201\321\201\321\213/\320\226\320\265\320\273\321\203\320\264\321\214\320\241\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\276\320\271\320\230\320\267\320\241\320\276\320\276\321\202\320\262\320\265\321\202\321\201\321\202\320\262\320\270\321\217.os" @@ -0,0 +1,9 @@ +// BSLLS:MissingVariablesDescription-off +// BSLLS:ExportVariables-off + +&Деталька("Моя.Настройка") +Перем Деталька Экспорт; + +&Желудь +Процедура ПриСозданииОбъекта() +КонецПроцедуры diff --git "a/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" "b/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" index 79ad686..4c3244b 100644 --- "a/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" +++ "b/tests/\320\237\320\276\320\264\320\265\320\273\320\272\320\260.os" @@ -466,6 +466,32 @@ КонецПроцедуры +&Тест +Процедура ЗначениеДеталькиМожноПереопределить() Экспорт + + // Дано + ЗначенияДеталек = Новый Соответствие(); + Настройки = Новый Соответствие(); + + ЗначенияДеталек.Вставить("Моя", Настройки); + Настройки.Вставить("Настройка", "Переопределенное значение"); + + Совет = Новый СоветДругогоМастера(); + Совет.ЗначенияДеталек(ЗначенияДеталек); + + Поделка = Новый Поделка(Совет); + Поделка + .ДобавитьЖелудь(Тип("ЖелудьСДеталькойИзСоответствия")) + .ЗапуститьПриложение(); + + // Когда + Желудь = Поделка.НайтиЖелудь("ЖелудьСДеталькойИзСоответствия"); + + // Тогда + Ожидаем.Что(Желудь.Деталька, "Хитрая настройка не прочиталась").Равно("Переопределенное значение"); + +КонецПроцедуры + &Тест Процедура НапильникПолучаетЖелудьЧерезКонструктор() Экспорт @@ -1061,4 +1087,4 @@ Ожидаем.Что(Желудь.Массив[0]).Равно(1); Ожидаем.Что(Желудь.Массив[1]).Равно("2"); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры