Skip to content

Commit 17550e1

Browse files
committed
Указание версии при установке пакета
1 parent cf1d5ba commit 17550e1

File tree

4 files changed

+38
-11
lines changed

4 files changed

+38
-11
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: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,22 @@
109109

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

112-
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
112+
// УстановленныеПакеты = ПолучитьУстановленныеПакеты();
113113

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

120121
КонецПроцедуры
121122

122123
Процедура ОбновитьПакетИзОблака(Знач ИмяПакета) Экспорт
124+
125+
ИмяВерсияПакета = РаботаСВерсиями.РазобратьИмяПакета(ИмяПакета);
123126

124-
УстановленныеПакеты = ПолучитьУстановленныеПакеты();
125-
126-
СкачатьИУстановитьПакет(ИмяПакета, Неопределено);
127+
СкачатьИУстановитьПакет(ИмяВерсияПакета.ИмяПакета, ИмяВерсияПакета.Версия);
127128

128129
КонецПроцедуры
129130

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: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
СписокТестов.Добавить("ТестДолжен_ПолучитьПустуюСтруктуруВерсии");
1515
СписокТестов.Добавить("ТестДолжен_ЗаписатьВерсиюВСтроку");
1616
СписокТестов.Добавить("ТестДолжен_ПроверитьЧтоВерсияАБольшеВерсииБ");
17+
СписокТестов.Добавить("ТестДолжен_ПолучитьИмяИВерсиюПакета");
1718

1819
Возврат СписокТестов;
1920

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

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

0 commit comments

Comments
 (0)