From 9c05b2e9b30c0f18da2750d25bada41bd379ad74 Mon Sep 17 00:00:00 2001 From: Vladimir Nadulich Date: Mon, 2 Nov 2020 22:53:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=B0=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BF=D1=80=D1=8F=D0=BC=D0=BE=D0=B9=20=D0=B8=D0=BD?= =?UTF-8?q?=D1=82=D0=B5=D1=80=D0=BD=D0=B5=D1=82-=D1=81=D1=81=D1=8B=D0=BB?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...260\320\275\320\264\320\260Opm_Install.os" | 29 +++++++++++++++++-- ...\260\320\275\320\264\320\260Opm_Update.os" | 26 +++++++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) 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"); + ДД.Записать(ИмяВременногоФайла); + + РаботаСПакетами.УстановитьПакетИзФайла(ИмяВременногоФайла, РежимУстановки, , НастройкаУстановки); + + УдалитьФайлы(ИмяВременногоФайла); + Иначе Для каждого ИмяПакета Из МассивПакетовКОбновлению Цикл