diff --git a/features/install-file.feature b/features/install-file.feature index 08301c1..36cb125 100644 --- a/features/install-file.feature +++ b/features/install-file.feature @@ -24,7 +24,7 @@ И я вижу в консоли вывод | Событие установки - ПередУстановкой - КаталогУстановкиПакета | | Событие установки - ПриУстановке - КаталогУстановкиПакета | - | ИНФОРМАЦИЯ - Установка завершена | + | Установка завершена | И Вывод команды "opm" не содержит "Внешнее исключение" И Код возврата команды "opm" равен 0 И В каталоге из переменной "РабочийКаталог" создается файл или каталог "oscript_modules" diff --git a/packagedef b/packagedef index f801dc9..ef6a8ad 100644 --- a/packagedef +++ b/packagedef @@ -13,7 +13,7 @@ Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант); ВерсияПродукта = Константы_ЛокальнаяВерсия.ВерсияПродукта; Иначе - ВерсияПродукта = "1.6.1"; + ВерсияПродукта = "1.6.2"; КонецЕсли; Описание.Имя("opm") diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" index 545c86d..819aa71 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\243\321\201\321\202\320\260\320\275\320\276\320\262\320\272\320\270\320\237\320\260\320\272\320\265\321\202\320\276\320\262.os" @@ -111,23 +111,37 @@ КонецПроцедуры -Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета) Экспорт +Процедура УстановитьПакетПоОписанию(Знач ЗависимостьПакета, Знач УровеньЗависимости = 0) Экспорт + + Если УровеньЗависимости < 0 Тогда + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; + КонецЕсли; Если ЗависимостьПакета.ДляРазработки Тогда - Если УстанавливатьЗависимостиРазработчика Тогда + // Зависимости разработчика устанавливаются только на первом уровне (УровеньЗависимости = 0) + Если УстанавливатьЗависимостиРазработчика И УровеньЗависимости = 0 Тогда Лог.Отладка("<%1> отмечена как зависимость для разработчика. Устанавливаем.", ЗависимостьПакета.ИмяПакета); Иначе - Лог.Отладка("<%1> отмечена как зависимость для разработчика, " + - "но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета); + Если УровеньЗависимости > 0 Тогда + Лог.Отладка("<%1> отмечена как зависимость для разработчика, " + + "но это транзитивная зависимость (уровень %2). Пропускаем.", ЗависимостьПакета.ИмяПакета, УровеньЗависимости); + Иначе + Лог.Отладка("<%1> отмечена как зависимость для разработчика, " + + "но установка зависимостей для разработчика не активирована. Пропускаем.", ЗависимостьПакета.ИмяПакета); + КонецЕсли; Возврат; КонецЕсли; КонецЕсли; - УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина); + УстановитьПакетПоИмениИВерсии(ЗависимостьПакета.ИмяПакета, ЗависимостьПакета.МинимальнаяВерсия, Истина, УровеньЗависимости); КонецПроцедуры -Процедура УстановитьПакетИзАрхива(Знач ФайлПакета, Знач ЭтоЗависимыйПакет = Ложь) Экспорт +Процедура УстановитьПакетИзАрхива(Знач ФайлПакета, Знач ЭтоЗависимыйПакет = Ложь, Знач УровеньЗависимости = 0) Экспорт + + Если УровеньЗависимости < 0 Тогда + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; + КонецЕсли; КаталогУстановки = ?(ЭтоЗависимыйПакет, КаталогУстановкиЗависимостей, ЦелевойКаталогУстановки); УстановкаПакета = Новый УстановкаПакета(); @@ -162,23 +176,31 @@ Если УстанавливатьЗависимости Тогда // Тут надо корректно найти имя пакета в пути Если ФС.КаталогСуществует(ПутьККаталогуЛокальныхЗависимостей) Тогда - РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей); + РазрешитьЗависимостиПакетаЛокально(МанифестПакета, ПутьККаталогуЛокальныхЗависимостей, УровеньЗависимости); Иначе - РазрешитьЗависимостиПакета(МанифестПакета); + РазрешитьЗависимостиПакета(МанифестПакета, УровеньЗависимости); КонецЕсли; КонецЕсли; КонецПроцедуры -Процедура УстановитьПакетПоИмениИВерсии(Знач ИмяПакета, Знач ВерсияПакета, ЗНач ЭтоЗависимыйПакет = Ложь) Экспорт +Процедура УстановитьПакетПоИмениИВерсии(Знач ИмяПакета, Знач ВерсияПакета, ЗНач ЭтоЗависимыйПакет = Ложь, Знач УровеньЗависимости = 0) Экспорт + + Если УровеньЗависимости < 0 Тогда + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; + КонецЕсли; ФайлПакета = РаботаСПакетами.ПолучитьПакет(ИмяПакета, ВерсияПакета, , ИмяСервера); - УстановитьПакетИзАрхива(ФайлПакета, ЭтоЗависимыйПакет); + УстановитьПакетИзАрхива(ФайлПакета, ЭтоЗависимыйПакет, УровеньЗависимости); КонецПроцедуры -Процедура РазрешитьЗависимостиПакета(Знач Манифест) Экспорт +Процедура РазрешитьЗависимостиПакета(Знач Манифест, Знач УровеньЗависимости = 0) Экспорт + + Если УровеньЗависимости < 0 Тогда + ВызватьИсключение "УровеньЗависимости не может быть меньше нуля"; + КонецЕсли; Зависимости = Манифест.Зависимости(); Если Зависимости.Количество() = 0 Тогда @@ -197,7 +219,7 @@ // скачать // определить зависимости и так по кругу - УстановитьПакетПоОписанию(Зависимость); + УстановитьПакетПоОписанию(Зависимость, УровеньЗависимости + 1); УстановленныеПакеты.Обновить(); Иначе @@ -209,7 +231,7 @@ КонецПроцедуры -Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей) +Процедура РазрешитьЗависимостиПакетаЛокально(Манифест, ПутьККаталогуЛокальныхЗависимостей, Знач УровеньЗависимости = 0) Зависимости = Манифест.Зависимости(); Если Зависимости.Количество() = 0 Тогда @@ -237,7 +259,7 @@ Иначе - УстановитьПакетПоОписанию(Зависимость); + УстановитьПакетПоОписанию(Зависимость, УровеньЗависимости + 1); КонецЕсли; diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" index a4648ef..89dbd99 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\232\320\276\320\275\321\201\321\202\320\260\320\275\321\202\321\213Opm.os" @@ -24,5 +24,5 @@ ПутьВЗапасномХранилище = "/download/"; ЛокальныйКаталогУстановкиПакетов = "oscript_modules"; ИмяЛога = "oscript.app.opm"; -ВерсияПродукта = "1.6.1"; +ВерсияПродукта = "1.6.2"; ИмяФайлаНастроек = "opm.cfg";