Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Установка пакета по прямой интернет-ссылке #192

Merged
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
29 changes: 27 additions & 2 deletions src/cmd/Классы/КомандаOpm_Install.os
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

КомандаПриложения.Опция("a all", Ложь, "Установить все пакеты, зарегистрированные в хабе");
КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет. Поддерживает указание маски файла для пакетной установки");
КомандаПриложения.Опция("u url", "", "Указать прямую интернет-ссылку на файл *.ospx из которого нужно установить пакет");

КомандаПриложения.Опция("l local", Ложь, "Установить пакеты в локальный каталог oscript_modules");
КомандаПриложения.Опция("dev", Ложь, "Признак установки пакетов для разработки");
КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов");
Expand Down Expand Up @@ -36,6 +38,7 @@
УстановкаВсехПакетов = КомандаПриложения.ЗначениеОпции("all");
КаталогУстановки = КомандаПриложения.ЗначениеОпции("dest");
ФайлПакетаУстановки = КомандаПриложения.ЗначениеОпции("file");
ИнтернетСсылкаНаПакет = КомандаПриложения.ЗначениеОпции("url");
МассивПакетовКУстановке = КомандаПриложения.ЗначениеАргумента("PACKAGE");

НеобходимоУстановитьЗависимости = Не КомандаПриложения.ЗначениеОпции("skip-install-deps");
Expand Down Expand Up @@ -64,6 +67,7 @@
Лог.Отладка("УстановкаВсехПакетов: %1", УстановкаВсехПакетов);
Лог.Отладка("КаталогУстановки: %1", КаталогУстановки);
Лог.Отладка("ФайлПакетаУстановки: %1", ФайлПакетаУстановки);
Лог.Отладка("ИнтернетСсылкаНаПакет: %1", ИнтернетСсылкаНаПакет);
Лог.Отладка("МассивПакетовКУстановке: %1", МассивПакетовКУстановке.Количество());
Лог.Отладка("НеобходимоУстановитьЗависимости: %1", НеобходимоУстановитьЗависимости);
Лог.Отладка("СоздаватьФайлыЗапуска: %1", СоздаватьФайлыЗапуска);
Expand All @@ -76,7 +80,7 @@

Если УстановкаВсехПакетов Тогда
РаботаСПакетами.УстановитьВсеПакетыИзОблака(РежимУстановки, ЦелевойКаталог, НастройкаУстановки);
ИначеЕсли ПустаяСтрока(ФайлПакетаУстановки) И МассивПакетовКУстановке.Количество() = 0 Тогда
ИначеЕсли ПустаяСтрока(ФайлПакетаУстановки) И ПустаяСтрока(ИнтернетСсылкаНаПакет) И МассивПакетовКУстановке.Количество() = 0 Тогда
РаботаСПакетами.УстановитьПакетыПоОписаниюПакета(РежимУстановки, ЦелевойКаталог, НастройкаУстановки);
ИначеЕсли НЕ ПустаяСтрока(ФайлПакетаУстановки) Тогда

Expand All @@ -98,6 +102,28 @@

КонецЦикла;

ИначеЕсли НЕ ПустаяСтрока(ИнтернетСсылкаНаПакет) Тогда

позСервер = СтрНайти(ИнтернетСсылкаНаПакет, "/", , , 3);
Сервер = Лев(ИнтернетСсылкаНаПакет, позСервер-1);
Адрес = Сред(ИнтернетСсылкаНаПакет, позСервер);
Если Нрег(Лев(Сервер, 5)) = "https" Тогда
Порт = 443;
Иначе
Порт = 80;
КонецЕсли;

Соединение = Новый HTTPСоединение(Сервер, Порт);
Запрос = Новый HTTPЗапрос(Адрес);
Ответ = Соединение.Получить(Запрос);
ДД = Ответ.ПолучитьТелоКакДвоичныеДанные();
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("ospx");
ДД.Записать(ИмяВременногоФайла);

РаботаСПакетами.УстановитьПакетИзФайла(ИмяВременногоФайла, РежимУстановки, ЦелевойКаталог, НастройкаУстановки);

УдалитьФайлы(ИмяВременногоФайла);

Иначе

Для каждого ИмяПакета Из МассивПакетовКУстановке Цикл
Expand All @@ -111,7 +137,6 @@
РаботаСПакетами.УстановитьПакетИзОблака(ИмяПакета, РежимУстановки, ЦелевойКаталог, НастройкаУстановки);

КонецЕсли;


КонецЦикла;

Expand Down
26 changes: 26 additions & 0 deletions src/cmd/Классы/КомандаOpm_Update.os
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

КомандаПриложения.Опция("a all", Ложь, "Обновить все установленные пакеты");
КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет");
КомандаПриложения.Опция("u url", "", "Указать прямую интернет-ссылку на файл *.ospx из которого нужно установить пакет");

КомандаПриложения.Опция("l local", Ложь, "Обновление пакета в локальном каталоге oscript_modules");
КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов");
КомандаПриложения.Опция("skip-create-app", Ложь, "признак отключения создания файла запуска");
Expand Down Expand Up @@ -33,6 +35,7 @@
ОбновлениеВЛокальныйКаталог = КомандаПриложения.ЗначениеОпции("local");
ОбновлениеВсехПакетов = КомандаПриложения.ЗначениеОпции("all");
ФайлПакетаУстановки = КомандаПриложения.ЗначениеОпции("file");
ИнтернетСсылкаНаПакет = КомандаПриложения.ЗначениеОпции("url");
МассивПакетовКОбновлению = КомандаПриложения.ЗначениеАргумента("PACKAGE");

НеобходимУстановитьЗависимости = Не КомандаПриложения.ЗначениеОпции("skip-install-deps");
Expand All @@ -54,6 +57,29 @@
РаботаСПакетами.ОбновитьУстановленныеПакеты(РежимУстановки, , НастройкаУстановки);
ИначеЕсли НЕ ПустаяСтрока(ФайлПакетаУстановки) Тогда
РаботаСПакетами.УстановитьПакетИзФайла(ФайлПакетаУстановки, РежимУстановки, , НастройкаУстановки);

ИначеЕсли НЕ ПустаяСтрока(ИнтернетСсылкаНаПакет) Тогда

позСервер = СтрНайти(ИнтернетСсылкаНаПакет, "/", , , 3);
Сервер = Лев(ИнтернетСсылкаНаПакет, позСервер-1);
Адрес = Сред(ИнтернетСсылкаНаПакет, позСервер);
Если Нрег(Лев(Сервер, 5)) = "https" Тогда
Порт = 443;
Иначе
Порт = 80;
КонецЕсли;

Соединение = Новый HTTPСоединение(Сервер, Порт);
Запрос = Новый HTTPЗапрос(Адрес);
Ответ = Соединение.Получить(Запрос);
ДД = Ответ.ПолучитьТелоКакДвоичныеДанные();
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("ospx");
ДД.Записать(ИмяВременногоФайла);

РаботаСПакетами.УстановитьПакетИзФайла(ИмяВременногоФайла, РежимУстановки, , НастройкаУстановки);

УдалитьФайлы(ИмяВременногоФайла);

Иначе

Для каждого ИмяПакета Из МассивПакетовКОбновлению Цикл
Expand Down