Skip to content

Commit 3070402

Browse files
authored
Merge pull request #20 from asosnoviy/feature/installversion
Указание версии при установке пакета
2 parents cf1d5ba + a113bf5 commit 3070402

File tree

4 files changed

+39
-14
lines changed

4 files changed

+39
-14
lines changed

src/Классы/ДиспетчерКомандПриложения.os

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@
4949
Процедура ДобавитьКомандуInstall(Знач Парсер)
5050
Команда = Парсер.ОписаниеКоманды("install", "Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.");
5151
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет");
52-
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе");
52+
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
5353
Парсер.ДобавитьКоманду(Команда);
5454
КонецПроцедуры
5555

5656
Процедура ДобавитьКомандуUpdate(Знач Парсер)
5757
Команда = Парсер.ОписаниеКоманды("update", "Обновить пакет");
5858
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-f", "Указать файл из которого нужно установить пакет");
59-
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе");
59+
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "ИмяПакета", "Имя пакета в хабе. Чтобы установить конкретную версию, используйте ИмяПакета@ВерсияПакета");
6060
Парсер.ДобавитьКоманду(Команда);
6161
КонецПроцедуры
6262

src/Классы/УстановкаПакета.os

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,15 @@
109109

110110
Процедура УстановитьПакетИзОблака(Знач ИмяПакета) Экспорт
111111

112-
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
113-
114-
Если УстановленныеПакеты.ПакетУстановлен(ИмяПакета) Тогда
115-
Лог.Ошибка(СтрШаблон("Пакет %1 уже установлен", ИмяПакета));
116-
Иначе
117-
СкачатьИУстановитьПакет(ИмяПакета, Неопределено);
118-
КонецЕсли;
119-
112+
ИмяВерсияПакета = РаботаСВерсиями.РазобратьИмяПакета(ИмяПакета);
113+
СкачатьИУстановитьПакет(ИмяВерсияПакета.ИмяПакета, ИмяВерсияПакета.Версия);
114+
120115
КонецПроцедуры
121116

122117
Процедура ОбновитьПакетИзОблака(Знач ИмяПакета) Экспорт
123-
124-
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
125-
126-
СкачатьИУстановитьПакет(ИмяПакета, Неопределено);
118+
119+
ИмяВерсияПакета = РаботаСВерсиями.РазобратьИмяПакета(ИмяПакета);
120+
СкачатьИУстановитьПакет(ИмяВерсияПакета.ИмяПакета, ИмяВерсияПакета.Версия);
127121

128122
КонецПроцедуры
129123

src/Модули/РаботаСВерсиями.os

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,17 @@
123123

124124
Возврат Компонент;
125125

126+
КонецФункции
127+
128+
Функция РазобратьИмяПакета(знач ИмяПакета) Экспорт
129+
130+
Пакет = Новый Структура("ИмяПакета,Версия","",Неопределено);
131+
ИмяВерсия = СтрРазделить(ИмяПакета,"@");
132+
Пакет.Вставить("ИмяПакета", ИмяВерсия[0]);
133+
Если ИмяВерсия.Количество() > 1 Тогда
134+
Пакет.Вставить("Версия", ИмяВерсия[1]);
135+
КонецЕсли;
136+
137+
Возврат Пакет;
138+
126139
КонецФункции

tests/versions-test.os

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
СписокТестов.Добавить("ТестДолжен_ПолучитьПустуюСтруктуруВерсии");
1515
СписокТестов.Добавить("ТестДолжен_ЗаписатьВерсиюВСтроку");
1616
СписокТестов.Добавить("ТестДолжен_ПроверитьЧтоВерсияАБольшеВерсииБ");
17+
СписокТестов.Добавить("ТестДолжен_ПолучитьИмяИВерсиюПоИмениПакетаБезВерсии");
18+
СписокТестов.Добавить("ТестДолжен_ПолучитьИмяИВерсиюПоИмениПакетаСВерсией");
1719

1820
Возврат СписокТестов;
1921

@@ -65,3 +67,19 @@
6567
Ожидаем.Что(РаботаСВерсиями.СравнитьВерсии(ВерсияА, ВерсияБ)).Больше(0);
6668

6769
КонецПроцедуры
70+
71+
Процедура ТестДолжен_ПолучитьИмяИВерсиюПоИмениПакетаБезВерсии() Экспорт
72+
73+
Пакет = РаботаСВерсиями.РазобратьИмяПакета("opm");
74+
Ожидаем.Что(Пакет.ИмяПакета).Равно("opm");
75+
Ожидаем.Что(Пакет.Версия).Равно(Неопределено);
76+
77+
КонецПроцедуры
78+
79+
Процедура ТестДолжен_ПолучитьИмяИВерсиюПоИмениПакетаСВерсией() Экспорт
80+
81+
Пакет = РаботаСВерсиями.РазобратьИмяПакета("opm@1.1.1");
82+
Ожидаем.Что(Пакет.ИмяПакета).Равно("opm");
83+
Ожидаем.Что(Пакет.Версия).Равно("1.1.1");
84+
85+
КонецПроцедуры

0 commit comments

Comments
 (0)