Skip to content

Commit 57f99b6

Browse files
committed
Немного косметики. + Бонусом 2 простые фичи
1 parent bac404d commit 57f99b6

File tree

4 files changed

+125
-37
lines changed

4 files changed

+125
-37
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# language: ru
2+
3+
Функциональность: Выполнение команды продукта
4+
5+
Как разработчик
6+
Я хочу иметь возможность выполнять команды продукта
7+
Чтобы выполнять коллективную разработку приложения для OneScript
8+
9+
Контекст:
10+
Допустим Я очищаю параметры команды "oscript" в контексте
11+
И я включаю отладку лога с именем "oscript.app.gitsync"
12+
# И я включаю отладку лога с именем "bdd"
13+
14+
Сценарий: Получение версии продукта
15+
Когда Я выполняю команду "oscript" c параметрами "src/gitsync.os version"
16+
Тогда Я сообщаю вывод команды "oscript"
17+
И Вывод команды "oscript" содержит "2.1.1"
18+
И Вывод команды "oscript" не содержит "GitSync v"
19+
И Код возврата команды "oscript" равен 0
20+
21+
Сценарий: Получение помощи продукта
22+
Когда Я выполняю команду "oscript" c параметрами "src/gitsync.os help"
23+
Тогда Вывод команды "oscript" содержит
24+
"""
25+
GitSync v2.1.1
26+
Возможные команды:
27+
"""
28+
И Код возврата команды "oscript" равен 0
29+
30+
Сценарий: Вызов исполняемого файла без параметров
31+
Когда Я выполняю команду "oscript" c параметрами "src/gitsync.os"
32+
Тогда Вывод команды "oscript" содержит
33+
"""
34+
GitSync v2.1.1
35+
ОШИБКА - Некорректные аргументы командной строки
36+
Возможные команды:
37+
"""
38+
И Код возврата команды "oscript" равен 5
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# language: ru
2+
3+
Функционал: Проверка сборки продукта
4+
Как Пользователь
5+
Я хочу автоматически проверять сборку моего продукта
6+
Чтобы гарантировать возможность установку моего продукта у пользователей
7+
8+
Контекст: Отключение отладки в логах
9+
Допустим Я выключаю отладку лога с именем "oscript.lib.gitsync"
10+
И Я очищаю параметры команды "opm" в контексте
11+
12+
Сценарий: Выполнение команды без параметров
13+
Когда Я добавляю параметр "build ." для команды "opm"
14+
И Я выполняю команду "opm"
15+
Тогда Вывод команды "opm" содержит "Сборка пакета завершена"
16+
И Вывод команды "opm" не содержит "Внешнее исключение"
17+
И Код возврата команды "opm" равен 0

src/core/Модули/ПараметрыСистемы.os

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,27 @@
77
//
88
///////////////////////////////////////////////////////////////////
99

10-
// ИмяЛогаСистемы
10+
// ИмяПродукта
11+
// Возвращает имя продукта
12+
//
13+
// Возвращаемое значение:
14+
// Строка - Значение имени продукта
15+
//
16+
Функция ИмяПродукта() Экспорт
17+
18+
Возврат "GitSync";
19+
20+
КонецФункции // ИмяПродукта
21+
1122
// Возвращает идентификатор лога приложения
1223
//
1324
// Возвращаемое значение:
1425
// Строка - Значение идентификатора лога приложения
1526
//
1627
Функция ИмяЛогаСистемы() Экспорт
17-
18-
Возврат "oscript.app.gitsync";
19-
28+
29+
Возврат "oscript.app." + ИмяПродукта();
30+
2031
КонецФункции // ИмяЛогаСистемы
2132

2233
// ВерсияПродукта
@@ -34,18 +45,29 @@
3445
Процедура ПриРегистрацииКомандПриложения(Знач КлассыРеализацииКоманд) Экспорт
3546

3647
КлассыРеализацииКоманд["help"] = "КомандаСправкаПоПараметрам";
48+
КлассыРеализацииКоманд[ИмяКомандыВерсия()] = "КомандаVersion";
3749
КлассыРеализацииКоманд["clone"] = "КомандаClone";
3850
КлассыРеализацииКоманд["init"] = "КомандаInit";
3951
КлассыРеализацииКоманд["set-version"] = "КомандаSetVersion";
4052
КлассыРеализацииКоманд["all"] = "КомандаAll";
4153
КлассыРеализацииКоманд["export"] = "КомандаExport";
4254
КлассыРеализацииКоманд["sync"] = "КомандаSync";
43-
КлассыРеализацииКоманд["version"] = "КомандаVersion";
44-
55+
4556
КонецПроцедуры // ПриРегистрацииКомандПриложения
4657

4758
Функция ИмяКомандыПоУмолчанию() Экспорт
4859

4960
Возврат "sync";
5061

51-
КонецФункции // ИмяКомандыПоУмолчанию
62+
КонецФункции // ИмяКомандыПоУмолчанию
63+
64+
// Возвращает имя команды версия (ключ командной строки)
65+
//
66+
// Возвращаемое значение:
67+
// Строка - имя команды
68+
//
69+
Функция ИмяКомандыВерсия() Экспорт
70+
71+
Возврат "version";
72+
73+
КонецФункции // ИмяКомандыВерсия

src/gitsync.os

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,44 +12,22 @@
1212

1313
#Использовать "core"
1414

15-
///////////////////////////////////////////////////////////////////
15+
///////////////////////////////////////////////////////////////////////////////
1616

1717
Перем Лог;
1818

19-
///////////////////////////////////////////////////////////////////
20-
21-
Процедура ВывестиВерсию()
22-
23-
Сообщить("GitSync v" + ПараметрыСистемы.ВерсияПродукта());
24-
25-
КонецПроцедуры // ВывестиВерсию()
26-
27-
Функция РазобратьАргументыКоманднойСтроки()
28-
29-
Парсер = ПолучитьПарсерКоманднойСтроки();
30-
Возврат Парсер.Разобрать(АргументыКоманднойСтроки);
31-
32-
КонецФункции // РазобратьАргументыКоманднойСтроки
33-
34-
Функция ПолучитьПарсерКоманднойСтроки()
35-
36-
Парсер = Новый ПарсерАргументовКоманднойСтроки();
37-
МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер);
38-
39-
Возврат Парсер;
40-
41-
КонецФункции // ПолучитьПарсерКоманднойСтроки
19+
///////////////////////////////////////////////////////////////////////////////
4220

4321
Функция ВыполнениеКоманды()
4422

45-
ВывестиВерсию();
4623
ПараметрыЗапуска = РазобратьАргументыКоманднойСтроки();
4724

4825
Если ПараметрыЗапуска = Неопределено ИЛИ ПараметрыЗапуска.Количество() = 0 Тогда
4926

27+
ВывестиВерсию();
5028
Лог.Ошибка("Некорректные аргументы командной строки");
5129
МенеджерКомандПриложения.ПоказатьСправкуПоКомандам();
52-
Возврат МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения;
30+
Возврат МенеджерКомандПриложения.РезультатыКоманд().НеверныеПараметры;
5331

5432
КонецЕсли;
5533

@@ -61,35 +39,68 @@
6139
// это команда
6240
Команда = ПараметрыЗапуска.Команда;
6341
ЗначенияПараметров = ПараметрыЗапуска.ЗначенияПараметров;
42+
Лог.Отладка("Выполняю команду продукта %1", Команда);
6443

6544
ИначеЕсли ЗначениеЗаполнено(ПараметрыСистемы.ИмяКомандыПоУмолчанию()) Тогда
6645

6746
// это команда по-умолчанию
6847
Команда = ПараметрыСистемы.ИмяКомандыПоУмолчанию();
6948
ЗначенияПараметров = ПараметрыЗапуска;
49+
Лог.Отладка("Выполняю команду продукта по умолчанию %1", Команда);
7050

7151
Иначе
7252

7353
ВызватьИсключение "Некорректно настроено имя команды по-умолчанию.";
7454

7555
КонецЕсли;
7656

57+
Если Команда <> ПараметрыСистемы.ИмяКомандыВерсия() Тогда
58+
59+
ВывестиВерсию();
60+
61+
КонецЕсли;
62+
7763
Возврат МенеджерКомандПриложения.ВыполнитьКоманду(Команда, ЗначенияПараметров);
7864

7965
КонецФункции // ВыполнениеКоманды()
8066

67+
///////////////////////////////////////////////////////////////////////////////
68+
69+
Процедура ВывестиВерсию()
70+
71+
Сообщить(СтрШаблон("%1 v%2", ПараметрыСистемы.ИмяПродукта(), ПараметрыСистемы.ВерсияПродукта()));
72+
73+
КонецПроцедуры // ВывестиВерсию
74+
75+
Функция ПолучитьПарсерКоманднойСтроки()
76+
77+
Парсер = Новый ПарсерАргументовКоманднойСтроки();
78+
МенеджерКомандПриложения.ЗарегистрироватьКоманды(Парсер);
79+
80+
Возврат Парсер;
81+
82+
КонецФункции // ПолучитьПарсерКоманднойСтроки
83+
84+
Функция РазобратьАргументыКоманднойСтроки()
85+
86+
Парсер = ПолучитьПарсерКоманднойСтроки();
87+
Возврат Парсер.Разобрать(АргументыКоманднойСтроки);
88+
89+
КонецФункции // РазобратьАргументыКоманднойСтроки
90+
8191
///////////////////////////////////////////////////////////////////
8292

8393
Лог = Логирование.ПолучитьЛог(ПараметрыСистемы.ИмяЛогаСистемы());
8494
МенеджерКомандПриложения.РегистраторКоманд(ПараметрыСистемы);
8595

8696
Попытка
87-
97+
8898
ЗавершитьРаботу(ВыполнениеКоманды());
89-
99+
90100
Исключение
91-
101+
92102
Лог.КритичнаяОшибка(ОписаниеОшибки());
93103
ЗавершитьРаботу(МенеджерКомандПриложения.РезультатыКоманд().ОшибкаВремениВыполнения);
94-
104+
95105
КонецПопытки;
106+

0 commit comments

Comments
 (0)