diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" index 5f589c8..1b28d03 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Install.os" @@ -5,6 +5,8 @@ КомандаПриложения.Опция("a all", Ложь, "Установить все пакеты, зарегистрированные в хабе"); КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет. Поддерживает указание маски файла для пакетной установки"); + КомандаПриложения.Опция("u url", "", "Указать прямую интернет-ссылку на файл *.ospx из которого нужно установить пакет"); + КомандаПриложения.Опция("l local", Ложь, "Установить пакеты в локальный каталог oscript_modules"); КомандаПриложения.Опция("dev", Ложь, "Признак установки пакетов для разработки"); КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов"); @@ -36,6 +38,7 @@ УстановкаВсехПакетов = КомандаПриложения.ЗначениеОпции("all"); КаталогУстановки = КомандаПриложения.ЗначениеОпции("dest"); ФайлПакетаУстановки = КомандаПриложения.ЗначениеОпции("file"); + ИнтернетСсылкаНаПакет = КомандаПриложения.ЗначениеОпции("url"); МассивПакетовКУстановке = КомандаПриложения.ЗначениеАргумента("PACKAGE"); НеобходимоУстановитьЗависимости = Не КомандаПриложения.ЗначениеОпции("skip-install-deps"); @@ -64,6 +67,7 @@ Лог.Отладка("УстановкаВсехПакетов: %1", УстановкаВсехПакетов); Лог.Отладка("КаталогУстановки: %1", КаталогУстановки); Лог.Отладка("ФайлПакетаУстановки: %1", ФайлПакетаУстановки); + Лог.Отладка("ИнтернетСсылкаНаПакет: %1", ИнтернетСсылкаНаПакет); Лог.Отладка("МассивПакетовКУстановке: %1", МассивПакетовКУстановке.Количество()); Лог.Отладка("НеобходимоУстановитьЗависимости: %1", НеобходимоУстановитьЗависимости); Лог.Отладка("СоздаватьФайлыЗапуска: %1", СоздаватьФайлыЗапуска); @@ -76,7 +80,7 @@ Если УстановкаВсехПакетов Тогда РаботаСПакетами.УстановитьВсеПакетыИзОблака(РежимУстановки, ЦелевойКаталог, НастройкаУстановки); - ИначеЕсли ПустаяСтрока(ФайлПакетаУстановки) И МассивПакетовКУстановке.Количество() = 0 Тогда + ИначеЕсли ПустаяСтрока(ФайлПакетаУстановки) И ПустаяСтрока(ИнтернетСсылкаНаПакет) И МассивПакетовКУстановке.Количество() = 0 Тогда РаботаСПакетами.УстановитьПакетыПоОписаниюПакета(РежимУстановки, ЦелевойКаталог, НастройкаУстановки); ИначеЕсли НЕ ПустаяСтрока(ФайлПакетаУстановки) Тогда @@ -98,6 +102,28 @@ КонецЦикла; + ИначеЕсли НЕ ПустаяСтрока(ИнтернетСсылкаНаПакет) Тогда + + позСервер = СтрНайти(ИнтернетСсылкаНаПакет, "/", , , 3); + Сервер = Лев(ИнтернетСсылкаНаПакет, позСервер-1); + Адрес = Сред(ИнтернетСсылкаНаПакет, позСервер); + Если Нрег(Лев(Сервер, 5)) = "https" Тогда + Порт = 443; + Иначе + Порт = 80; + КонецЕсли; + + Соединение = Новый HTTPСоединение(Сервер, Порт); + Запрос = Новый HTTPЗапрос(Адрес); + Ответ = Соединение.Получить(Запрос); + ДД = Ответ.ПолучитьТелоКакДвоичныеДанные(); + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("ospx"); + ДД.Записать(ИмяВременногоФайла); + + РаботаСПакетами.УстановитьПакетИзФайла(ИмяВременногоФайла, РежимУстановки, ЦелевойКаталог, НастройкаУстановки); + + УдалитьФайлы(ИмяВременногоФайла); + Иначе Для каждого ИмяПакета Из МассивПакетовКУстановке Цикл @@ -111,7 +137,6 @@ РаботаСПакетами.УстановитьПакетИзОблака(ИмяПакета, РежимУстановки, ЦелевойКаталог, НастройкаУстановки); КонецЕсли; - КонецЦикла; diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" index 77371cf..10244f4 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Opm_Update.os" @@ -5,6 +5,8 @@ КомандаПриложения.Опция("a all", Ложь, "Обновить все установленные пакеты"); КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет"); + КомандаПриложения.Опция("u url", "", "Указать прямую интернет-ссылку на файл *.ospx из которого нужно установить пакет"); + КомандаПриложения.Опция("l local", Ложь, "Обновление пакета в локальном каталоге oscript_modules"); КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов"); КомандаПриложения.Опция("skip-create-app", Ложь, "признак отключения создания файла запуска"); @@ -33,6 +35,7 @@ ОбновлениеВЛокальныйКаталог = КомандаПриложения.ЗначениеОпции("local"); ОбновлениеВсехПакетов = КомандаПриложения.ЗначениеОпции("all"); ФайлПакетаУстановки = КомандаПриложения.ЗначениеОпции("file"); + ИнтернетСсылкаНаПакет = КомандаПриложения.ЗначениеОпции("url"); МассивПакетовКОбновлению = КомандаПриложения.ЗначениеАргумента("PACKAGE"); НеобходимУстановитьЗависимости = Не КомандаПриложения.ЗначениеОпции("skip-install-deps"); @@ -54,6 +57,29 @@ РаботаСПакетами.ОбновитьУстановленныеПакеты(РежимУстановки, , НастройкаУстановки); ИначеЕсли НЕ ПустаяСтрока(ФайлПакетаУстановки) Тогда РаботаСПакетами.УстановитьПакетИзФайла(ФайлПакетаУстановки, РежимУстановки, , НастройкаУстановки); + + ИначеЕсли НЕ ПустаяСтрока(ИнтернетСсылкаНаПакет) Тогда + + позСервер = СтрНайти(ИнтернетСсылкаНаПакет, "/", , , 3); + Сервер = Лев(ИнтернетСсылкаНаПакет, позСервер-1); + Адрес = Сред(ИнтернетСсылкаНаПакет, позСервер); + Если Нрег(Лев(Сервер, 5)) = "https" Тогда + Порт = 443; + Иначе + Порт = 80; + КонецЕсли; + + Соединение = Новый HTTPСоединение(Сервер, Порт); + Запрос = Новый HTTPЗапрос(Адрес); + Ответ = Соединение.Получить(Запрос); + ДД = Ответ.ПолучитьТелоКакДвоичныеДанные(); + ИмяВременногоФайла = ПолучитьИмяВременногоФайла("ospx"); + ДД.Записать(ИмяВременногоФайла); + + РаботаСПакетами.УстановитьПакетИзФайла(ИмяВременногоФайла, РежимУстановки, , НастройкаУстановки); + + УдалитьФайлы(ИмяВременногоФайла); + Иначе Для каждого ИмяПакета Из МассивПакетовКОбновлению Цикл