Skip to content

Commit ce19495

Browse files
authored
Merge pull request #57 from Khorevaa/feature/ref-app
Рефакторинг под app-template #52
2 parents 1cb33bb + d9ff8ac commit ce19495

35 files changed

+641
-418
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
oscript_modules/
2+
test-reports/

packagedef

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "Константы.os");
2+
ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src", "Модули", "КонстантыOpm.os");
33
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);
44

55
Описание.Имя("opm")
@@ -8,6 +8,7 @@
88
.ЗависитОт("logos")
99
.ЗависитОт("cmdline")
1010
.ЗависитОт("tempfiles")
11+
.ЗависитОт("1testrunner")
1112
.ВключитьФайл("src")
1213
.ОпределяетКласс("ОписаниеПакета", "src/Классы/ОписаниеПакета.os")
1314
.ИсполняемыйФайл("src/opm.os");

src/opm.os

Lines changed: 51 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,73 @@
1-
/////////////////////////////////////////////////////////////////////////
1+
///////////////////////////////////////////////////////////////////////////
22
//
33
// OneScript Package Manager
44
// Установщик пакетов для OneScript
55
// Выполняется, как os-приложение в командной строке:
66
//
77
// opm install my-package.ospx
88
//
9-
/////////////////////////////////////////////////////////////////////////
9+
////////////////////////////////////////////////////////////////////////
10+
//
11+
// CLI-интерфейс для oscript-app
12+
//
13+
///////////////////////////////////////////////////////////////////////
1014

1115
#Использовать cmdline
12-
#Использовать logos
13-
1416
#Использовать "."
1517

1618
Перем Лог;
1719

18-
Процедура ВыполнитьКоманду(Знач Аргументы)
19-
20-
ОбработкаКоманд = СоздатьОбработчикКоманд();
21-
Парсер = Новый ПарсерАргументовКоманднойСтроки();
22-
23-
ОбработкаКоманд.ДобавитьОписанияКоманд(Парсер);
24-
25-
ПараметрыКоманды = Парсер.РазобратьКоманду(Аргументы);
26-
Если ПараметрыКоманды = Неопределено Тогда
27-
ВывестиСправкуПоКомандам(ОбработкаКоманд);
28-
ЗавершитьРаботу(1);
29-
КонецЕсли;
30-
31-
Попытка
32-
ОбработкаКоманд.ВыполнитьКоманду(ПараметрыКоманды);
33-
Исключение
34-
Лог.Отладка(ОписаниеОшибки());
35-
Лог.Информация(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
36-
ЗавершитьРаботу(1);
37-
КонецПопытки;
38-
39-
КонецПроцедуры
20+
/////////////////////////////////////////////////////////////////////////////////////////
4021

41-
Процедура ВывестиСправкуПоКомандам(Знач ОбработкаКоманд)
42-
43-
ОбработкаКоманд.ВывестиСправкуПоКомандам();
44-
45-
КонецПроцедуры
22+
Функция ПолучитьПарсерКоманднойСтроки()
23+
24+
Парсер = Новый ПарсерАргументовКоманднойСтроки();
25+
26+
МенеджерКомандПриложенияOpm.ЗарегистрироватьКоманды(Парсер);
27+
28+
Возврат Парсер;
29+
30+
КонецФункции
4631

47-
/////////////////////////////////////////////////////////////////////////
48-
// Вспомогательные функции
32+
Функция ПолезнаяРабота()
33+
ПараметрыЗапуска = РазобратьАргументыКоманднойСтроки();
34+
Если ПараметрыЗапуска = Неопределено или ПараметрыЗапуска.Количество() = 0 Тогда
35+
Лог.Ошибка("Некорректные аргументы командной строки");
36+
МенеджерКомандПриложенияOpm.ПоказатьСправкуПоКомандам();
37+
Возврат 1;
38+
КонецЕсли;
39+
40+
НастройкиПриложенияOpm.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg"));
4941

50-
Функция СоздатьОбработчикКоманд()
51-
Возврат Новый ДиспетчерКомандПриложения();
42+
Если ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда
43+
// это команда
44+
Команда = ПараметрыЗапуска.Команда;
45+
ЗначенияПараметров = ПараметрыЗапуска.ЗначенияПараметров;
46+
ИначеЕсли ЗначениеЗаполнено(ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию()) Тогда
47+
// это команда по-умолчанию
48+
Команда = ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию();
49+
ЗначенияПараметров = ПараметрыЗапуска;
50+
Иначе
51+
ВызватьИсключение "Некорректно настроено имя команды по-умолчанию.";
52+
КонецЕсли;
53+
54+
Возврат МенеджерКомандПриложенияOpm.ВыполнитьКоманду(Команда, ЗначенияПараметров);
55+
5256
КонецФункции
5357

58+
Функция РазобратьАргументыКоманднойСтроки()
59+
Парсер = ПолучитьПарсерКоманднойСтроки();
60+
Возврат Парсер.Разобрать(АргументыКоманднойСтроки);
61+
КонецФункции
5462

5563
/////////////////////////////////////////////////////////////////////////
56-
// Точка входа
5764

58-
Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога);
59-
НастройкиПриложения.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg"));
65+
Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы());
66+
МенеджерКомандПриложенияOpm.РегистраторКоманд(ПараметрыСистемыOpm);
6067

61-
ВыполнитьКоманду(АргументыКоманднойСтроки);
68+
Попытка
69+
ЗавершитьРаботу(ПолезнаяРабота());
70+
Исключение
71+
Лог.КритичнаяОшибка(ОписаниеОшибки());
72+
ЗавершитьРаботу(255);
73+
КонецПопытки;

0 commit comments

Comments
 (0)