Skip to content

Commit 3c0d47e

Browse files
authored
Merge pull request #106 from bia-tech/feature/multifileinstall
Добавил возможность устанавливать несколько файлов по маске из каталога
2 parents 36f634f + 53b9150 commit 3c0d47e

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/cmd/Классы/КомандаOpm_Install.os

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
ОписаниеКоманды = Парсер.ОписаниеКоманды(ИмяКоманды, "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.");
77
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-all", "Установить все пакеты, зарегистрированные в хабе");
8-
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-f", "Указать файл из которого нужно установить пакет");
8+
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-f", "Указать файл из которого нужно установить пакет. Поддерживает указание маски файла для пакетной установки");
99
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "-l", "Установить пакеты в локальный каталог oscript_modules");
1010
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "-dest", "Переопределить стандартный каталог в который устанавливаются пакеты (вместо oscript_modules)");
1111
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
@@ -48,7 +48,25 @@
4848
ИначеЕсли ЗначенияПараметров["-f"] = Неопределено И ЗначенияПараметров["ИмяПакета"] = Неопределено Тогда
4949
РаботаСПакетами.УстановитьПакетыПоОписаниюПакета(РежимУстановки, ЦелевойКаталог);
5050
ИначеЕсли ЗначенияПараметров["-f"] <> Неопределено Тогда
51-
РаботаСПакетами.УстановитьПакетИзФайла(ЗначенияПараметров["-f"], РежимУстановки, ЦелевойКаталог);
51+
52+
РазобранныйАдрес = СтрРазделить(ЗначенияПараметров["-f"], ПолучитьРазделительПути());
53+
Путь = ".";
54+
Маска = ЗначенияПараметров["-f"];
55+
Если РазобранныйАдрес.Количество() > 1 Тогда // отделим последнюю секцию как имя файла, а остальное опять соберем в строку пути
56+
57+
Маска = РазобранныйАдрес[РазобранныйАдрес.Количество() - 1];
58+
РазобранныйАдрес.Удалить(РазобранныйАдрес.Количество() - 1);
59+
Путь = СтрСоединить(РазобранныйАдрес, ПолучитьРазделительПути());
60+
61+
КонецЕсли;
62+
63+
ФайлыПоМаске = НайтиФайлы(Путь, Маска);
64+
Для Каждого ФайлПакета Из ФайлыПоМаске Цикл
65+
66+
РаботаСПакетами.УстановитьПакетИзФайла(ФайлПакета.ПолноеИмя, РежимУстановки, ЦелевойКаталог);
67+
68+
КонецЦикла;
69+
5270
Иначе
5371
РаботаСПакетами.УстановитьПакетИзОблака(ЗначенияПараметров["ИмяПакета"], РежимУстановки, ЦелевойКаталог);
5472
КонецЕсли;

0 commit comments

Comments
 (0)