|
1 |
| -///////////////////////////////////////////////////////////////////////// |
| 1 | +/////////////////////////////////////////////////////////////////////////// |
2 | 2 | //
|
3 | 3 | // OneScript Package Manager
|
4 | 4 | // Установщик пакетов для OneScript
|
5 | 5 | // Выполняется, как os-приложение в командной строке:
|
6 | 6 | //
|
7 | 7 | // opm install my-package.ospx
|
8 | 8 | //
|
9 |
| -///////////////////////////////////////////////////////////////////////// |
| 9 | +//////////////////////////////////////////////////////////////////////// |
| 10 | +// |
| 11 | +// CLI-интерфейс для oscript-app |
| 12 | +// |
| 13 | +/////////////////////////////////////////////////////////////////////// |
10 | 14 |
|
11 | 15 | #Использовать cmdline
|
12 |
| -#Использовать logos |
13 |
| - |
14 | 16 | #Использовать "."
|
15 | 17 |
|
16 | 18 | Перем Лог;
|
17 | 19 |
|
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 | +///////////////////////////////////////////////////////////////////////////////////////// |
40 | 21 |
|
41 |
| -Процедура ВывестиСправкуПоКомандам(Знач ОбработкаКоманд) |
42 |
| - |
43 |
| - ОбработкаКоманд.ВывестиСправкуПоКомандам(); |
44 |
| - |
45 |
| -КонецПроцедуры |
| 22 | +Функция ПолучитьПарсерКоманднойСтроки() |
| 23 | + |
| 24 | + Парсер = Новый ПарсерАргументовКоманднойСтроки(); |
| 25 | + |
| 26 | + МенеджерКомандПриложенияOpm.ЗарегистрироватьКоманды(Парсер); |
| 27 | + |
| 28 | + Возврат Парсер; |
| 29 | + |
| 30 | +КонецФункции |
46 | 31 |
|
47 |
| -///////////////////////////////////////////////////////////////////////// |
48 |
| -// Вспомогательные функции |
| 32 | +Функция ПолезнаяРабота() |
| 33 | + ПараметрыЗапуска = РазобратьАргументыКоманднойСтроки(); |
| 34 | + Если ПараметрыЗапуска = Неопределено или ПараметрыЗапуска.Количество() = 0 Тогда |
| 35 | + Лог.Ошибка("Некорректные аргументы командной строки"); |
| 36 | + МенеджерКомандПриложенияOpm.ПоказатьСправкуПоКомандам(); |
| 37 | + Возврат 1; |
| 38 | + КонецЕсли; |
| 39 | + |
| 40 | + НастройкиПриложенияOpm.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); |
49 | 41 |
|
50 |
| -Функция СоздатьОбработчикКоманд() |
51 |
| - Возврат Новый ДиспетчерКомандПриложения(); |
| 42 | + Если ТипЗнч(ПараметрыЗапуска) = Тип("Структура") Тогда |
| 43 | + // это команда |
| 44 | + Команда = ПараметрыЗапуска.Команда; |
| 45 | + ЗначенияПараметров = ПараметрыЗапуска.ЗначенияПараметров; |
| 46 | + ИначеЕсли ЗначениеЗаполнено(ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию()) Тогда |
| 47 | + // это команда по-умолчанию |
| 48 | + Команда = ПараметрыСистемыOpm.ИмяКомандыПоУмолчанию(); |
| 49 | + ЗначенияПараметров = ПараметрыЗапуска; |
| 50 | + Иначе |
| 51 | + ВызватьИсключение "Некорректно настроено имя команды по-умолчанию."; |
| 52 | + КонецЕсли; |
| 53 | + |
| 54 | + Возврат МенеджерКомандПриложенияOpm.ВыполнитьКоманду(Команда, ЗначенияПараметров); |
| 55 | + |
52 | 56 | КонецФункции
|
53 | 57 |
|
| 58 | +Функция РазобратьАргументыКоманднойСтроки() |
| 59 | + Парсер = ПолучитьПарсерКоманднойСтроки(); |
| 60 | + Возврат Парсер.Разобрать(АргументыКоманднойСтроки); |
| 61 | +КонецФункции |
54 | 62 |
|
55 | 63 | /////////////////////////////////////////////////////////////////////////
|
56 |
| -// Точка входа |
57 | 64 |
|
58 |
| -Лог = Логирование.ПолучитьЛог(Константы.ИмяЛога); |
59 |
| -НастройкиПриложения.УстановитьФайлНастроек(ОбъединитьПути(СтартовыйСценарий().Каталог, "opm.cfg")); |
| 65 | +Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); |
| 66 | +МенеджерКомандПриложенияOpm.РегистраторКоманд(ПараметрыСистемыOpm); |
60 | 67 |
|
61 |
| -ВыполнитьКоманду(АргументыКоманднойСтроки); |
| 68 | +Попытка |
| 69 | + ЗавершитьРаботу(ПолезнаяРабота()); |
| 70 | +Исключение |
| 71 | + Лог.КритичнаяОшибка(ОписаниеОшибки()); |
| 72 | + ЗавершитьРаботу(255); |
| 73 | +КонецПопытки; |
0 commit comments