-
Notifications
You must be signed in to change notification settings - Fork 31
OPM в оффлайне #238
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
Merged
Merged
OPM в оффлайне #238
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
4f82b4a
opm download
dmpas 4397e9f
Файловое зеркало.
dmpas 32b2caf
Удалена неиспользуемая процедура.
dmpas 3b25752
Отступы.
dmpas 9a5d2a5
Устранено повторение метода ПрочитатьМетаданныеПакета.
dmpas 0148448
Убрано лишнее предупреждение.
dmpas 6e55251
Объединение логики кэшей пакетов.
dmpas 4f14dea
Улучшен поиск последней версии при установке с файлового сервера.
dmpas File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
/////////////////////////////////////////////////////////////////////////////////////////////////// | ||
// Прикладной интерфейс | ||
|
||
Процедура ОписаниеКоманды(Знач КомандаПриложения) Экспорт | ||
|
||
КомандаПриложения.Опция("a all", Ложь, "Установить все пакеты, зарегистрированные в хабе"); | ||
КомандаПриложения.Опция("f file", "", "Указать файл из которого нужно установить пакет. Поддерживает указание маски файла для пакетной установки"); | ||
КомандаПриложения.Опция("u url", "", "Указать прямую интернет-ссылку на файл *.ospx из которого нужно установить пакет"); | ||
|
||
КомандаПриложения.Опция("dev", Ложь, "Признак установки пакетов для разработки"); | ||
КомандаПриложения.Опция("s skip-install-deps", Ложь, "признак пропуска установки зависимых пакетов"); | ||
КомандаПриложения.Опция("d dest", "", "Целевой каталог"); | ||
|
||
ОпцияЗеркала = КомандаПриложения.Опция("m mirror", "", "Указать имя сервера, с которого необходимо ставить пакеты. | ||
| Доступные сервера прописываются в конфигурационном файле opm.cfg, параметр 'СервераПакетов'.") | ||
.ВОкружении("OPM_HUB_MIRROR") | ||
.ТПеречисление(); | ||
|
||
МенеджерПолучения = Новый МенеджерПолученияПакетов(); | ||
Для Каждого ДоступноеЗеркало Из МенеджерПолучения.ИменаДоступныхСерверов() Цикл | ||
ОпцияЗеркала.Перечисление(ДоступноеЗеркало, ДоступноеЗеркало, "Сервер '" + ДоступноеЗеркало + "'"); | ||
КонецЦикла; | ||
|
||
КомандаПриложения.Аргумент("PACKAGE", "", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета") | ||
.ТМассивСтрок() | ||
.Обязательный(Ложь); | ||
|
||
// КомандаПриложения.Спек = "(-a | --all | -l | --local | -d | --dest )"; | ||
|
||
КонецПроцедуры | ||
|
||
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт | ||
|
||
УстановкаПакетовРазработчика = КомандаПриложения.ЗначениеОпции("dev"); | ||
УстановкаВсехПакетов = КомандаПриложения.ЗначениеОпции("all"); | ||
КаталогУстановки = КомандаПриложения.ЗначениеОпции("dest"); | ||
ФайлПакетаУстановки = КомандаПриложения.ЗначениеОпции("file"); | ||
ИнтернетСсылкаНаПакет = КомандаПриложения.ЗначениеОпции("url"); | ||
МассивПакетовКУстановке = КомандаПриложения.ЗначениеАргумента("PACKAGE"); | ||
|
||
НеобходимоУстановитьЗависимости = Не КомандаПриложения.ЗначениеОпции("skip-install-deps"); | ||
ИмяСервера = КомандаПриложения.ЗначениеОпции("mirror"); | ||
|
||
РежимУстановки = РежимУстановкиПакетов.Скачивание; | ||
|
||
Если Не ПустаяСтрока(КаталогУстановки) Тогда | ||
ЦелевойКаталог = КаталогУстановки; | ||
Иначе | ||
ЦелевойКаталог = ТекущийКаталог(); | ||
КонецЕсли; | ||
Лог = Логирование.ПолучитьЛог(ПараметрыПриложенияOpm.ИмяЛогаСистемы()); | ||
|
||
Лог.Отладка("УстановкаПакетовРазработчика: %1", УстановкаПакетовРазработчика); | ||
Лог.Отладка("УстановкаВсехПакетов: %1", УстановкаВсехПакетов); | ||
Лог.Отладка("КаталогУстановки: %1", КаталогУстановки); | ||
Лог.Отладка("ФайлПакетаУстановки: %1", ФайлПакетаУстановки); | ||
Лог.Отладка("ИнтернетСсылкаНаПакет: %1", ИнтернетСсылкаНаПакет); | ||
Лог.Отладка("МассивПакетовКУстановке: %1", МассивПакетовКУстановке.Количество()); | ||
Лог.Отладка("НеобходимоУстановитьЗависимости: %1", НеобходимоУстановитьЗависимости); | ||
|
||
НастройкаУстановки = РаботаСПакетами.ПолучитьНастройкуУстановки(); | ||
НастройкаУстановки.УстанавливатьЗависимости = НеобходимоУстановитьЗависимости; | ||
НастройкаУстановки.УстанавливатьЗависимостиРазработчика = УстановкаПакетовРазработчика; | ||
НастройкаУстановки.СоздаватьФайлыЗапуска = Ложь; | ||
НастройкаУстановки.ИмяСервера = ИмяСервера; | ||
|
||
Если УстановкаВсехПакетов Тогда | ||
РаботаСПакетами.УстановитьВсеПакетыИзОблака(РежимУстановки, ЦелевойКаталог, НастройкаУстановки); | ||
ИначеЕсли ПустаяСтрока(ФайлПакетаУстановки) И ПустаяСтрока(ИнтернетСсылкаНаПакет) И МассивПакетовКУстановке.Количество() = 0 Тогда | ||
РаботаСПакетами.УстановитьПакетыПоОписаниюПакета(РежимУстановки, ЦелевойКаталог, НастройкаУстановки); | ||
ИначеЕсли НЕ ПустаяСтрока(ФайлПакетаУстановки) Тогда | ||
|
||
РазобранныйАдрес = СтрРазделить(ФайлПакетаУстановки, ПолучитьРазделительПути()); | ||
Путь = "."; | ||
Маска = ФайлПакетаУстановки; | ||
Если РазобранныйАдрес.Количество() > 1 Тогда // отделим последнюю секцию как имя файла, а остальное опять соберем в строку пути | ||
|
||
Маска = РазобранныйАдрес[РазобранныйАдрес.Количество() - 1]; | ||
РазобранныйАдрес.Удалить(РазобранныйАдрес.Количество() - 1); | ||
Путь = СтрСоединить(РазобранныйАдрес, ПолучитьРазделительПути()); | ||
|
||
КонецЕсли; | ||
|
||
ФайлыПоМаске = НайтиФайлы(Путь, Маска); | ||
Для Каждого ФайлПакета Из ФайлыПоМаске Цикл | ||
|
||
РаботаСПакетами.УстановитьПакетИзФайла(ФайлПакета.ПолноеИмя, РежимУстановки, ЦелевойКаталог, НастройкаУстановки); | ||
EvilBeaver marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
КонецЦикла; | ||
|
||
ИначеЕсли НЕ ПустаяСтрока(ИнтернетСсылкаНаПакет) Тогда | ||
|
||
позСервер = СтрНайти(ИнтернетСсылкаНаПакет, "/", , , 3); | ||
Сервер = Лев(ИнтернетСсылкаНаПакет, позСервер-1); | ||
Адрес = Сред(ИнтернетСсылкаНаПакет, позСервер); | ||
Если Нрег(Лев(Сервер, 5)) = "https" Тогда | ||
Порт = 443; | ||
Иначе | ||
Порт = 80; | ||
КонецЕсли; | ||
|
||
Соединение = Новый HTTPСоединение(Сервер, Порт); | ||
Запрос = Новый HTTPЗапрос(Адрес); | ||
Ответ = Соединение.Получить(Запрос); | ||
ДД = Ответ.ПолучитьТелоКакДвоичныеДанные(); | ||
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("ospx"); | ||
ДД.Записать(ИмяВременногоФайла); | ||
|
||
РаботаСПакетами.УстановитьПакетИзФайла(ИмяВременногоФайла, РежимУстановки, ЦелевойКаталог, НастройкаУстановки); | ||
|
||
УдалитьФайлы(ИмяВременногоФайла); | ||
|
||
Иначе | ||
|
||
Для каждого ИмяПакета Из МассивПакетовКУстановке Цикл | ||
|
||
Если ЭтоФайлПакета(ИмяПакета) Тогда | ||
|
||
РаботаСПакетами.УстановитьПакетИзФайла(ИмяПакета, РежимУстановки, ЦелевойКаталог, НастройкаУстановки); | ||
|
||
Иначе | ||
|
||
РаботаСПакетами.УстановитьПакетИзОблака(ИмяПакета, РежимУстановки, ЦелевойКаталог, НастройкаУстановки); | ||
|
||
КонецЕсли; | ||
|
||
КонецЦикла; | ||
|
||
КонецЕсли; | ||
|
||
КонецПроцедуры | ||
|
||
Функция ЭтоФайлПакета(Знач ИмяПакета) | ||
|
||
Возврат СтрЗаканчиваетсяНа(НРег(ИмяПакета), ".ospx"); | ||
|
||
КонецФункции |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.