|
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