|
111 | 111 |
|
112 | 112 | КонецПроцедуры |
113 | 113 |
|
114 | | -Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета) Экспорт |
| 114 | +Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета, Знач УровеньЗависимости = 0) Экспорт |
| 115 | + |
| 116 | + Если УровеньЗависимости < 0 Тогда |
| 117 | + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; |
| 118 | + КонецЕсли; |
115 | 119 |
|
116 | 120 | Если ЗависимостьПакета.ДляРазработки Тогда |
117 | | - Если УстанавливатьЗависимостиРазработчика Тогда |
| 121 | + // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) |
| 122 | + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда |
118 | 123 | Лог.Отладка("<%1> отмечена как зависимость для разработчика. Устанавливаем.", ЗависимостьПакета.ИмяПакета); |
119 | 124 | Иначе |
120 | | - Лог.Отладка("<%1> отмечена как зависимость для разработчика, " + |
121 | | - "но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета); |
| 125 | + Если УровеньЗависимости > 0 Тогда |
| 126 | + Лог.Отладка("<%1> отмечена как зависимость для разработчика, " + |
| 127 | + "но это транзитивная зависимость (уровень %2). Пропускаем.", ЗависимостьПакета.ИмяПакета, УровеньЗависимости); |
| 128 | + Иначе |
| 129 | + Лог.Отладка("<%1> отмечена как зависимость для разработчика, " + |
| 130 | + "но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета); |
| 131 | + КонецЕсли; |
122 | 132 | Возврат; |
123 | 133 | КонецЕсли; |
124 | 134 | КонецЕсли; |
125 | 135 |
|
126 | | - УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина); |
| 136 | + УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина, УровеньЗависимости); |
127 | 137 |
|
128 | 138 | КонецПроцедуры |
129 | 139 |
|
130 | | -Процедура УстановитьПакетИзАрхива(Знач ФайлПакета, Знач ЭтоЗависимыйПакет = Ложь) Экспорт |
| 140 | +Процедура УстановитьПакетИзАрхива(Знач ФайлПакета, Знач ЭтоЗависимыйПакет = Ложь, Знач УровеньЗависимости = 0) Экспорт |
| 141 | + |
| 142 | + Если УровеньЗависимости < 0 Тогда |
| 143 | + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; |
| 144 | + КонецЕсли; |
131 | 145 |
|
132 | 146 | КаталогУстановки = ?(ЭтоЗависимыйПакет, КаталогУстановкиЗависимостей, ЦелевойКаталогУстановки); |
133 | 147 | УстановкаПакета = Новый УстановкаПакета(); |
|
162 | 176 | Если УстанавливатьЗависимости Тогда |
163 | 177 | // Тут надо корректно найти имя пакета в пути |
164 | 178 | Если ФС.КаталогСуществует(ПутьККаталогуЛокальныхЗависимостей) Тогда |
165 | | - РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей); |
| 179 | + РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей, УровеньЗависимости); |
166 | 180 | Иначе |
167 | | - РазрешитьЗависимостиПакета(МанифестПакета); |
| 181 | + РазрешитьЗависимостиПакета(МанифестПакета, УровеньЗависимости); |
168 | 182 | КонецЕсли; |
169 | 183 |
|
170 | 184 | КонецЕсли; |
171 | 185 |
|
172 | 186 | КонецПроцедуры |
173 | 187 |
|
174 | | -Процедура УстановитьПакетПоИмениИВерсии(Знач ИмяПакета, Знач ВерсияПакета, ЗНач ЭтоЗависимыйПакет = Ложь) Экспорт |
| 188 | +Процедура УстановитьПакетПоИмениИВерсии(Знач ИмяПакета, Знач ВерсияПакета, ЗНач ЭтоЗависимыйПакет = Ложь, Знач УровеньЗависимости = 0) Экспорт |
| 189 | + |
| 190 | + Если УровеньЗависимости < 0 Тогда |
| 191 | + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; |
| 192 | + КонецЕсли; |
175 | 193 |
|
176 | 194 | ФайлПакета = РаботаСПакетами.ПолучитьПакет(ИмяПакета, ВерсияПакета, , ИмяСервера); |
177 | | - УстановитьПакетИзАрхива(ФайлПакета, ЭтоЗависимыйПакет); |
| 195 | + УстановитьПакетИзАрхива(ФайлПакета, ЭтоЗависимыйПакет, УровеньЗависимости); |
178 | 196 |
|
179 | 197 | КонецПроцедуры |
180 | 198 |
|
181 | | -Процедура РазрешитьЗависимостиПакета(Знач Манифест) Экспорт |
| 199 | +Процедура РазрешитьЗависимостиПакета(Знач Манифест, Знач УровеньЗависимости = 0) Экспорт |
| 200 | + |
| 201 | + Если УровеньЗависимости < 0 Тогда |
| 202 | + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; |
| 203 | + КонецЕсли; |
182 | 204 |
|
183 | 205 | Зависимости = Манифест.Зависимости(); |
184 | 206 | Если Зависимости.Количество() = 0 Тогда |
|
197 | 219 |
|
198 | 220 | // скачать |
199 | 221 | // определить зависимости и так по кругу |
200 | | - УстановитьПакетПоОписанию(Зависимость); |
| 222 | + УстановитьПакетПоОписанию(Зависимость, УровеньЗависимости + 1); |
201 | 223 | УстановленныеПакеты.Обновить(); |
202 | 224 |
|
203 | 225 | Иначе |
|
209 | 231 |
|
210 | 232 | КонецПроцедуры |
211 | 233 |
|
212 | | -Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей) |
| 234 | +Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей, Знач УровеньЗависимости = 0) |
213 | 235 |
|
214 | 236 | Зависимости = Манифест.Зависимости(); |
215 | 237 | Если Зависимости.Количество() = 0 Тогда |
|
237 | 259 |
|
238 | 260 | Иначе |
239 | 261 |
|
240 | | - УстановитьПакетПоОписанию(Зависимость); |
| 262 | + УстановитьПакетПоОписанию(Зависимость, УровеньЗависимости + 1); |
241 | 263 |
|
242 | 264 | КонецЕсли; |
243 | 265 |
|
|
0 commit comments