Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
EvilBeaver committed Sep 24, 2018
2 parents 79c7f68 + 1a3526d commit ad36a70
Showing 1 changed file with 23 additions and 4 deletions.
27 changes: 23 additions & 4 deletions install/package-loader.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
// Пояснения по переменным даны в конце модуля
// Пояснения по переменным даны в конце модуля
Перем ПоказатьСообщенияЗагрузки;
Перем ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей;

Перем КэшМодулей;

Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ)
Вывести("
|ПриЗагрузкеБиблиотеки " + Путь);
Expand Down Expand Up @@ -66,7 +68,7 @@
Если Не ПустаяСтрока(Идентификатор) Тогда
Вывести(СтрШаблон(" модуль %1, файл %2", Идентификатор, ФайлКласса.ПолноеИмя));
Попытка
ДобавитьМодуль(ФайлКласса.ПолноеИмя, Идентификатор);
ДобавитьМодульЕслиРанееНеДобавляли(ФайлКласса.ПолноеИмя, Идентификатор);
Исключение
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
ВызватьИсключение;
Expand Down Expand Up @@ -145,7 +147,7 @@
Вывести(СтрШаблон(" модуль (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя));
СтандартнаяОбработка = Ложь;
Попытка
ДобавитьМодуль(Файл.ПолноеИмя, Файл.ИмяБезРасширения);
ДобавитьМодульЕслиРанееНеДобавляли(Файл.ПолноеИмя, Файл.ИмяБезРасширения);
Исключение
Если ВыдаватьОшибкуПриЗагрузкеУжеСуществующихКлассовМодулей Тогда
ВызватьИсключение;
Expand Down Expand Up @@ -187,6 +189,21 @@
КонецЕсли;
КонецПроцедуры

Процедура ДобавитьМодульЕслиРанееНеДобавляли(ПутьФайла, ИмяМодуля)
Вывести("Добавляю модуль, если ранее не добавляли " + ИмяМодуля);

МодульУжеЕсть = КэшМодулей.Найти(ИмяМодуля) <> Неопределено;
Если Не МодульУжеЕсть Тогда

Вывести("Добавляю модуль, т.к. он не найден - " + ИмяМодуля);
ДобавитьМодуль(ПутьФайла, ИмяМодуля);
КэшМодулей.Добавить(ИмяМодуля);
Иначе
Вывести("Пропускаю загрузку модуля " + ИмяМодуля);

КонецЕсли;
КонецПроцедуры

Процедура Вывести(Знач Сообщение)
Если ПоказатьСообщенияЗагрузки Тогда
Сообщить(Сообщение);
Expand Down Expand Up @@ -225,4 +242,6 @@
"OSLIB_LOADER_DUPLICATES", Ложь);

// для установки других значений переменных среды и запуска скриптов можно юзать следующую командную строку
// (set OSLIB_LOADER_TRACE=1) && (oscript .\tasks\test.os)
// (set OSLIB_LOADER_TRACE=1) && (oscript .\tasks\test.os)

КэшМодулей = Новый Массив;

0 comments on commit ad36a70

Please sign in to comment.