Skip to content

Commit a0644e7

Browse files
authored
Merge pull request #111 from khorevaa/feature/install-depends
Установка зависимостей пакета из каталога `oscript_modules`
2 parents 3c0d47e + 46bced8 commit a0644e7

File tree

1 file changed

+49
-6
lines changed

1 file changed

+49
-6
lines changed

src/core/Классы/МенеджерУстановкиПакетов.os

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
Процедура ПриСозданииОбъекта(Знач ВходящийРежимУстановкиПакетов = Неопределено, Знач ВходящийКаталогУстановки = Неопределено, Знач ВходящийКаталогУстановкиЗависимостей = Неопределено)
1818

19-
КаталогСистемныхБиблиотек = ПолучитьКаталогСистемныхБиблиотек();
20-
19+
2120
Если Не ВходящийКаталогУстановки = Неопределено Тогда
2221
УстановитьЦелевойКаталог(ВходящийКаталогУстановки);
2322
Иначе
23+
КаталогСистемныхБиблиотек = ПолучитьКаталогСистемныхБиблиотек();
2424
УстановитьЦелевойКаталог(КаталогСистемныхБиблиотек);
2525
КонецЕсли;
2626

@@ -40,14 +40,13 @@
4040
);
4141
УстановитьКаталогЗависимостей(ПутьККаталогуЛокальнойУстановки);
4242
Иначе
43+
КаталогСистемныхБиблиотек = ПолучитьКаталогСистемныхБиблиотек();
4344
УстановитьКаталогЗависимостей(КаталогСистемныхБиблиотек);
4445
КонецЕсли;
4546
КонецЕсли;
4647

4748
КешУстановленныхПакетов = Новый Соответствие;
4849

49-
50-
5150
КонецПроцедуры
5251

5352
Процедура УстановитьРежимУстановкиПакетов(Знач ЗначениеРежимУстановкиПакетов) Экспорт
@@ -115,9 +114,17 @@
115114
КонецПопытки;
116115

117116
МанифестПакета = УстановкаПакета.ПолучитьМанифестПакета();
118-
117+
ИмяПакета = МанифестПакета.Свойства().Имя;
118+
119+
ПолныйПутьККаталогуУстановки = Новый Файл(КаталогУстановки).ПолноеИмя;
120+
ИмяКаталогаЛокальныхЗависимостей = КонстантыOpm.ЛокальныйКаталогУстановкиПакетов;
121+
122+
ПутьККаталогуЛокальныхЗависимостей = ОбъединитьПути(ПолныйПутьККаталогуУстановки, ИмяПакета, ИмяКаталогаЛокальныхЗависимостей);
123+
119124
// Тут надо корректно найти имя пакета в пути
120-
Если НЕ ФС.КаталогСуществует(ОбъединитьПути(Новый Файл(КаталогУстановки).ПолноеИмя, КонстантыOpm.ЛокальныйКаталогУстановкиПакетов)) Тогда
125+
Если ФС.КаталогСуществует(ПутьККаталогуЛокальныхЗависимостей) Тогда
126+
РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей);
127+
Иначе
121128
РазрешитьЗависимостиПакета(МанифестПакета);
122129
КонецЕсли;
123130

@@ -157,6 +164,42 @@
157164

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

167+
Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей)
168+
169+
Зависимости = Манифест.Зависимости();
170+
Если Зависимости.Количество() = 0 Тогда
171+
Возврат;
172+
КонецЕсли;
173+
174+
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
175+
176+
Для Каждого Зависимость Из Зависимости Цикл
177+
Лог.Информация("Устанавливаю зависимость: <%1> из каталога локальных зависимостей", Зависимость.ИмяПакета);
178+
179+
Если УстановленныеПакеты.ПакетУстановлен(Зависимость, КаталогУстановкиЗависимостей) Тогда
180+
Лог.Информация("<%1> уже установлен. Пропускаем.", Зависимость.ИмяПакета);
181+
Продолжить;
182+
КонецЕсли;
183+
184+
ПутьККаталогуПакетаЗависимостиИсточник = ОбъединитьПути(ПутьККаталогуЛокальныхЗависимостей, Зависимость.ИмяПакета);
185+
186+
Если ФС.КаталогСуществует(ПутьККаталогуПакетаЗависимостиИсточник) Тогда
187+
188+
ПутьККаталогуПакетаЗависимостиПриемник = ОбъединитьПути(КаталогУстановкиЗависимостей, Зависимость.ИмяПакета);
189+
ФС.КопироватьСодержимоеКаталога(ПутьККаталогуПакетаЗависимостиИсточник, ПутьККаталогуПакетаЗависимостиПриемник);
190+
191+
Иначе
192+
193+
УстановитьПакетПоОписанию(Зависимость);
194+
195+
КонецЕсли;
196+
197+
УстановленныеПакеты.Обновить();
198+
199+
КонецЦикла;
200+
201+
КонецПроцедуры
202+
160203
Функция ПолучитьУстановленныеПакеты()
161204

162205
КэшУстановленныхПакетов = Новый КэшУстановленныхПакетов(КаталогУстановкиЗависимостей);

0 commit comments

Comments
 (0)