Skip to content

Commit 85eae21

Browse files
authored
Merge pull request #268 from oscript-library/copilot/all
Запретить legacy-опцию `-all` на входе CLI
2 parents cf99ca7 + db0d09a commit 85eae21

3 files changed

Lines changed: 71 additions & 0 deletions

File tree

src/cmd/opm.os

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
Процедура ВыполнитьПриложение()
2020

21+
ПараметрыПриложенияOpm.ПроверитьАргументыКоманднойСтроки(АргументыКоманднойСтроки);
22+
2123
Приложение = Новый КонсольноеПриложение("opm", НСтр("ru='Пакетный менеджер для OneScript';en='Package manager for OneScript'"));
2224
Приложение.Версия("v version", КонстантыOpm.ВерсияПродукта);
2325

src/cmd/Модули/ПараметрыПриложенияOpm.os

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11

22
Перем Лог;
33

4+
Процедура ПроверитьАргументыКоманднойСтроки(Знач АргументыЗапуска) Экспорт
5+
6+
Для Каждого АргументЗапуска Из АргументыЗапуска Цикл
7+
Если АргументЗапуска = "-all" Тогда
8+
ВызватьИсключение "Комбинация опций -all не поддерживается. Используйте либо --all (все пакеты) либо -al (--all --local - все пакеты в локальный каталог).";
9+
КонецЕсли;
10+
КонецЦикла;
11+
12+
КонецПроцедуры
13+
414
Функция ИмяЛогаСистемы() Экспорт
515
Возврат "oscript.app.opm";
616
КонецФункции

tests/cli-args-test.os

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#Использовать asserts
2+
#Использовать "../src/cmd"
3+
4+
Перем юТест;
5+
6+
Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт
7+
8+
юТест = Тестирование;
9+
10+
ИменаТестов = Новый Массив;
11+
ИменаТестов.Добавить("ТестДолжен_ЗапретитьОпциюМинусAll");
12+
ИменаТестов.Добавить("ТестДолжен_РазрешитьОпциюДвойнойМинусAll");
13+
14+
Возврат ИменаТестов;
15+
16+
КонецФункции
17+
18+
Процедура ПередЗапускомТеста() Экспорт
19+
КонецПроцедуры
20+
21+
Процедура ПослеЗапускаТеста() Экспорт
22+
КонецПроцедуры
23+
24+
Процедура ТестДолжен_ЗапретитьОпциюМинусAll() Экспорт
25+
26+
Попытка
27+
ПараметрыПриложенияOpm.ПроверитьАргументыКоманднойСтроки(СоздатьАргументыЗапуска("install", "-all"));
28+
Исключение
29+
ОписаниеОшибки = ИнформацияОбОшибке().Описание;
30+
Если СтрНайти(ОписаниеОшибки, "-all") > 0 И СтрНайти(ОписаниеОшибки, "--all") > 0 Тогда
31+
Возврат;
32+
КонецЕсли;
33+
ВызватьИсключение;
34+
КонецПопытки;
35+
36+
юТест.ПрерватьТест("Ожидали, что для -all будет выброшено исключение");
37+
38+
КонецПроцедуры
39+
40+
Процедура ТестДолжен_РазрешитьОпциюДвойнойМинусAll() Экспорт
41+
42+
АргументыЗапуска = СоздатьАргументыЗапуска("install", "--all");
43+
44+
ПараметрыПриложенияOpm.ПроверитьАргументыКоманднойСтроки(АргументыЗапуска);
45+
46+
Утверждения.ПроверитьРавенство(2, АргументыЗапуска.Количество());
47+
Утверждения.ПроверитьРавенство("--all", АргументыЗапуска[1]);
48+
49+
КонецПроцедуры
50+
51+
Функция СоздатьАргументыЗапуска(Знач ПервыйАргумент, Знач ВторойАргумент)
52+
53+
АргументыЗапуска = Новый Массив;
54+
АргументыЗапуска.Добавить(ПервыйАргумент);
55+
АргументыЗапуска.Добавить(ВторойАргумент);
56+
57+
Возврат АргументыЗапуска;
58+
59+
КонецФункции

0 commit comments

Comments
 (0)