1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-12-19 23:52:43 +02:00

Правки по CLI

This commit is contained in:
Anton Titovets
2024-03-26 14:15:13 +03:00
parent 419cedd743
commit d546b737c6
4 changed files with 119 additions and 108 deletions

View File

@@ -6,58 +6,74 @@
Перем ОбъектОПИ;
Перем Парсер;
Процедура ПриСозданииОбъекта()
ОбъектОПИ = Новый СвязьОПИ();
КонецПроцедуры
#Область СлужебныеПроцедурыИФункции
#Область Основные
Процедура ОсновнойОбработчик()
Парсер = Новый ПарсерАргументовКоманднойСтроки();
Парсер = Новый ПарсерАргументовКоманднойСтроки();
ОбъектОПИ = Новый СвязьОПИ();
Команды = ОбъектОПИ.СоответствиеКомандМодулей;
Для Каждого Команда Из ОбъектОПИ.ПолучитьИмяМодуля() Цикл
ДобавитьКомандуСправки();
Для Каждого Команда Из Команды Цикл
СформироватьКоманду(Команда.Ключ, Парсер);
КонецЦикла;
Результат = Парсер.Разобрать(АргументыКоманднойСтроки);
ТекущаяКоманда = Результат["Команда"];
Если ТекущаяКоманда = Неопределено Тогда
Справка.ВывестиНачальнуюСтраницу();
Справка.ВывестиНачальнуюСтраницу(Команды);
Иначе
ВыполнитьОбработкуКоманды(Результат);
КонецЕсли;
КонецПроцедуры
Процедура ДобавитьКомандуСправки()
Парсер.ДобавитьПараметр("-h");
Парсер.ДобавитьПараметр("-help");
Парсер.ДобавитьПараметр("--help");
КонецПроцедуры
Процедура СформироватьКоманду(Знач Имя, Парсер)
Команда = Парсер.ОписаниеКоманды(Имя);
ТаблицаПараметров = ОбъектОПИ.ПолучитьТаблицуПараметров(Имя).Скопировать();
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Метод");
ДобавитьПараметрыКоманды(Парсер, Команда, ТаблицаПараметров);
Парсер.ДобавитьКоманду(Команда);
ТаблицаПараметров = ОбъектОПИ.СоответствиеТаблицПараметров[Имя];
Если Не ТаблицаПараметров = Неопределено Тогда
ТаблицаПараметров = ТаблицаПараметров.Скопировать();
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Метод");
ДобавитьПараметрыКоманды(Парсер, Команда, ТаблицаПараметров);
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--help");
Парсер.ДобавитьКоманду(Команда);
Иначе
Справка.ВывестиСообщениеИсключения("Команда");
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьОбработкуКоманды(Знач Данные)
ТекущаяКоманда = Данные["Команда"];
Параметры = Данные["ЗначенияПараметров"];
Вывод = "";
Попытка
Вывод = ПолучитьРезультатОбработки(ТекущаяКоманда, Данные);
ОбработатьВыводJSON(Вывод);
Вывод = ПолучитьРезультатОбработки(ТекущаяКоманда, Параметры);
Если ЗначениеЗаполнено(Вывод) Тогда
ОбработатьВыводJSON(Вывод);
Сообщить(Символы.ПС + Вывод + Символы.ПС, СтатусСообщения.Внимание);
КонецЕсли;
@@ -66,37 +82,33 @@
Если ЗначениеЗаполнено(Вывод) Тогда
Сообщить(Вывод);
Иначе
Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Сообщить(Символы.ПС);
Справка.ВывестиСообщениеИсключения(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецЕсли;
КонецПопытки;
КонецПроцедуры
Функция ПолучитьРезультатОбработки(Знач Команда, Знач Данные)
Функция ПолучитьРезультатОбработки(Знач Команда, Знач Параметры)
Модуль = ОбъектОПИ.ПолучитьИмяМодуля(Команда);
Параметры = Данные["ЗначенияПараметров"];
Модуль = ОбъектОПИ.СоответствиеКомандМодулей[Команда];
Метод = Параметры["Метод"];
Ответ = "<пустой возврат>";
Ответ = "Функция вернула пустое значение";
ТаблицаПараметров = ОбъектОПИ.ПолучитьТаблицуПараметров(Команда);
ТаблицаПараметров = ОбъектОПИ.СоответствиеТаблицПараметров[Команда];
Если Не ЗначениеЗаполнено(Метод) Тогда
Если Не ЗначениеЗаполнено(Метод) Или Метод = "--help" Тогда
Справка.ВывестиСправкуПоМетодам(Команда, ТаблицаПараметров);
Возврат "";
КонецЕсли;
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
ПараметрыМетода = ТаблицаПараметров.НайтиСтроки(ОтборКоманды);
Если Параметры.Количество() = 1 Тогда
Если Параметры.Количество() = 2 Или Параметры["--help"] = Истина Тогда
Справка.ВывестиСправкуПоПараметрам(ПараметрыМетода, Команда);
Возврат "";
КонецЕсли;
ТекстВыполнения = СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
ТекстВыполнения = СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
Выполнить(ТекстВыполнения);
@@ -156,6 +168,7 @@
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
Счетчик = Счетчик + 1;
Иначе
СтрокаВызова = СтрокаВызова + " , ";
КонецЕсли;
@@ -176,8 +189,9 @@
#КонецОбласти
ПриСозданииОбъекта();
Попытка
ОсновнойОбработчик();
Исключение
Справка.ВывестиСообщениеИсключения(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;