Skip to content

Commit 89207db

Browse files
committed
Механизм локальной установки зависимостей
1 parent f42ea79 commit 89207db

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

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

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,17 @@
114114
КонецПопытки;
115115

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

@@ -156,6 +164,42 @@
156164

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

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+
159203
Функция ПолучитьУстановленныеПакеты()
160204

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

0 commit comments

Comments
 (0)