Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion features/install-file.feature
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
И я вижу в консоли вывод
| Событие установки - ПередУстановкой - КаталогУстановкиПакета |
| Событие установки - ПриУстановке - КаталогУстановкиПакета |
| ИНФОРМАЦИЯ - Установка завершена |
| Установка завершена |
И Вывод команды "opm" не содержит "Внешнее исключение"
И Код возврата команды "opm" равен 0
И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules"
Expand Down
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);
ВерсияПродукта = Константы_ЛокальнаяВерсия.ВерсияПродукта;
Иначе
ВерсияПродукта = "1.6.1";
ВерсияПродукта = "1.6.2";
КонецЕсли;

Описание.Имя("opm")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,23 +111,37 @@

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

Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета) Экспорт
Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета, Знач УровеньЗависимости = 0) Экспорт

Если УровеньЗависимости < 0 Тогда
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
КонецЕсли;

Если ЗависимостьПакета.ДляРазработки Тогда
Если УстанавливатьЗависимостиРазработчика Тогда
// Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0)
Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда
Лог.Отладка("<%1> отмечена как зависимость для разработчика. Устанавливаем.", ЗависимостьПакета.ИмяПакета);
Иначе
Лог.Отладка("<%1> отмечена как зависимость для разработчика, " +
"но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета);
Если УровеньЗависимости > 0 Тогда
Лог.Отладка("<%1> отмечена как зависимость для разработчика, " +
"но это транзитивная зависимость (уровень %2). Пропускаем.", ЗависимостьПакета.ИмяПакета, УровеньЗависимости);
Иначе
Лог.Отладка("<%1> отмечена как зависимость для разработчика, " +
"но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета);
КонецЕсли;
Возврат;
КонецЕсли;
КонецЕсли;

УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина);
УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина, УровеньЗависимости);

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

Процедура УстановитьПакетИзАрхива(Знач ФайлПакета, Знач ЭтоЗависимыйПакет = Ложь) Экспорт
Процедура УстановитьПакетИзАрхива(Знач ФайлПакета, Знач ЭтоЗависимыйПакет = Ложь, Знач УровеньЗависимости = 0) Экспорт

Если УровеньЗависимости < 0 Тогда
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
КонецЕсли;

КаталогУстановки = ?(ЭтоЗависимыйПакет, КаталогУстановкиЗависимостей, ЦелевойКаталогУстановки);
УстановкаПакета = Новый УстановкаПакета();
Expand Down Expand Up @@ -162,23 +176,31 @@
Если УстанавливатьЗависимости Тогда
// Тут надо корректно найти имя пакета в пути
Если ФС.КаталогСуществует(ПутьККаталогуЛокальныхЗависимостей) Тогда
РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей);
РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей, УровеньЗависимости);
Иначе
РазрешитьЗависимостиПакета(МанифестПакета);
РазрешитьЗависимостиПакета(МанифестПакета, УровеньЗависимости);
КонецЕсли;

КонецЕсли;

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

Процедура УстановитьПакетПоИмениИВерсии(Знач ИмяПакета, Знач ВерсияПакета, ЗНач ЭтоЗависимыйПакет = Ложь) Экспорт
Процедура УстановитьПакетПоИмениИВерсии(Знач ИмяПакета, Знач ВерсияПакета, ЗНач ЭтоЗависимыйПакет = Ложь, Знач УровеньЗависимости = 0) Экспорт

Если УровеньЗависимости < 0 Тогда
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
КонецЕсли;

ФайлПакета = РаботаСПакетами.ПолучитьПакет(ИмяПакета, ВерсияПакета, , ИмяСервера);
УстановитьПакетИзАрхива(ФайлПакета, ЭтоЗависимыйПакет);
УстановитьПакетИзАрхива(ФайлПакета, ЭтоЗависимыйПакет, УровеньЗависимости);

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

Процедура РазрешитьЗависимостиПакета(Знач Манифест) Экспорт
Процедура РазрешитьЗависимостиПакета(Знач Манифест, Знач УровеньЗависимости = 0) Экспорт

Если УровеньЗависимости < 0 Тогда
ВызватьИсключение "УровеньЗависимости не может быть меньше нуля";
КонецЕсли;

Зависимости = Манифест.Зависимости();
Если Зависимости.Количество() = 0 Тогда
Expand All @@ -197,7 +219,7 @@

// скачать
// определить зависимости и так по кругу
УстановитьПакетПоОписанию(Зависимость);
УстановитьПакетПоОписанию(Зависимость, УровеньЗависимости + 1);
УстановленныеПакеты.Обновить();

Иначе
Expand All @@ -209,7 +231,7 @@

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

Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей)
Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей, Знач УровеньЗависимости = 0)

Зависимости = Манифест.Зависимости();
Если Зависимости.Количество() = 0 Тогда
Expand Down Expand Up @@ -237,7 +259,7 @@

Иначе

УстановитьПакетПоОписанию(Зависимость);
УстановитьПакетПоОписанию(Зависимость, УровеньЗависимости + 1);

КонецЕсли;

Expand Down
2 changes: 1 addition & 1 deletion src/core/Модули/КонстантыOpm.os
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@
ПутьВЗапасномХранилище = "/download/";
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
ИмяЛога = "oscript.app.opm";
ВерсияПродукта = "1.6.1";
ВерсияПродукта = "1.6.2";
ИмяФайлаНастроек = "opm.cfg";
Loading