1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-04-02 22:05:37 +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; Счетчик = Счетчик + 1;
Иначе Иначе
СтрокаВызова = СтрокаВызова + " , "; СтрокаВызова = СтрокаВызова + " , ";
КонецЕсли; КонецЕсли;
@ -176,8 +189,9 @@
#КонецОбласти #КонецОбласти
Попытка
ПриСозданииОбъекта();
ОсновнойОбработчик(); ОсновнойОбработчик();
Исключение
Справка.ВывестиСообщениеИсключения(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

View File

@ -1,21 +1,12 @@
#Использовать "../../tools" #Использовать "../../tools"
Перем ОбъектОПИ;
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
Процедура ПриСозданииОбъекта() Процедура ВывестиНачальнуюСтраницу(Знач СоответствиеКомандМодулей) Экспорт
ОбъектОПИ = Новый СвязьОПИ;
КонецПроцедуры
Процедура ВывестиНачальнуюСтраницу() Экспорт
СписокКоманд = ""; СписокКоманд = "";
Модули = ОбъектОПИ.ПолучитьИмяМодуля();
Для Каждого Команда Из Модули Цикл Для Каждого Команда Из СоответствиеКомандМодулей Цикл
СписокКоманд = СписокКоманд + Команда.Ключ + ", "; СписокКоманд = СписокКоманд + Команда.Ключ + ", ";
КонецЦикла; КонецЦикла;
@ -44,6 +35,8 @@
Сообщить("Полную документацию можно найти по адресу: https://opi.neocities.org" + Символы.ПС Сообщить("Полную документацию можно найти по адресу: https://opi.neocities.org" + Символы.ПС
, СтатусСообщения.Информация); , СтатусСообщения.Информация);
ЗавершитьРаботу(0);
КонецПроцедуры КонецПроцедуры
@ -62,22 +55,28 @@
Сообщить(Символы.ПС); Сообщить(Символы.ПС);
ЗавершитьРаботу(0);
КонецПроцедуры КонецПроцедуры
Процедура ВывестиСправкуПоПараметрам(Знач ТаблицаПараметров, Знач Команда) Экспорт Процедура ВывестиСправкуПоПараметрам(Знач ТаблицаПараметров, Знач Команда) Экспорт
Если ТаблицаПараметров.Количество() = 0 Тогда Если ТаблицаПараметров.Количество() = 0 Тогда
Возврат; ВывестиСообщениеИсключения("Метод");
КонецЕсли; КонецЕсли;
ИмяМетода = ТаблицаПараметров[0].Метод; Дополнение = СформироватьДополненеОписания(Команда);
ТекстСправки = ""; ИмяМетода = ТаблицаПараметров[0].Метод;
ТекстСправки = "
Сообщить("
| ## Метод " + ИмяМетода + " | ## Метод " + ИмяМетода + "
| ## " + ТаблицаПараметров[0].ОписаниеМетода + " | ## " + ТаблицаПараметров[0].ОписаниеМетода;
| " + ОбъектОПИ.ДополнениеОписанияПараметров[Команда] + "
| ", СтатусСообщения.Информация); Если ЗначениеЗаполнено(Дополнение) Тогда
ТекстСправки = Символы.ПС + ТекстСправки + Дополнение + Символы.ПС;
КонецЕсли;
Сообщить(ТекстСправки, СтатусСообщения.Информация);
ТекстСправки = "";
ОбработатьТабуляциюСправки(ТаблицаПараметров); ОбработатьТабуляциюСправки(ТаблицаПараметров);
@ -93,22 +92,44 @@
КонецЦикла; КонецЦикла;
Сообщить(ТекстСправки + Символы.ПС, СтатусСообщения.Внимание); Сообщить(ТекстСправки + Символы.ПС, СтатусСообщения.Внимание);
ЗавершитьРаботу(0);
КонецПроцедуры КонецПроцедуры
Процедура ВывестиСообщениеИсключения(Знач Причина) Экспорт
Если Причина = "Команда" Тогда
Текст = "Некорректная команда! Проверьте правильность ввода";
Код = 1;
ИначеЕсли Причина = "Метод" Тогда
Текст = "Некорректный метод! Проверьте правильность ввода";
Код = 2;
Иначе
Текст = "Непредвиденная ошибка!: " + Причина;
Код = 99
КонецЕсли;
Текст = Символы.ПС + Текст + Символы.ПС;
Сообщить(Текст, СтатусСообщения.ОченьВажное);
ЗавершитьРаботу(Код);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Процедура ОбработатьТабуляциюСправки(ТаблицаПараметров) Процедура ОбработатьТабуляциюСправки(ТаблицаПараметров)
МаксимальнаяДлина = 0;
МаксимальнаяДлина = 15;
Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл
ДлинаТекущего = СтрДлина(ПараметрМетода["Параметр"]);
МаксимальнаяДлина = ?(ДлинаТекущего > МаксимальнаяДлина, ДлинаТекущего, МаксимальнаяДлина);
Пока Не СтрДлина(ПараметрМетода["Параметр"]) = МаксимальнаяДлина Цикл Пока Не СтрДлина(ПараметрМетода["Параметр"]) = МаксимальнаяДлина Цикл
ПараметрМетода["Параметр"] = ПараметрМетода["Параметр"] + " "; ПараметрМетода["Параметр"] = ПараметрМетода["Параметр"] + " ";
КонецЦикла; КонецЦикла;
@ -139,7 +160,27 @@
КонецЦикла; КонецЦикла;
КонецПроцедуры КонецПроцедуры
Функция СформироватьДополненеОписания(Команда)
Если Команда = "vk" Тогда
ТекстДополнения = "
| Структура JSON данных авторизации (параметр --auth):
| {
| ""access_token"": """",
| ""from_group"" : ""1"",
| ""owner_id"" : """",
| ""v"" : ""5.131"",
| ""app_id"" : """",
| ""group_id"" : """"
| }
|";
Иначе
ТекстДополнения = "";
КонецЕсли;
Возврат ТекстДополнения;
КонецФункции
#КонецОбласти #КонецОбласти
ПриСозданииОбъекта();

View File

@ -1,8 +1,7 @@
#Использовать "../../data" #Использовать "../../data"
Перем СоответствиеТаблицПараметров; Перем СоответствиеТаблицПараметров Экспорт;
Перем СоответствиеКомандМодулей; Перем СоответствиеКомандМодулей Экспорт;
Перем ДополнениеОписанияПараметров Экспорт;
Процедура ПриСозданииОбъекта() Процедура ПриСозданииОбъекта()
@ -13,8 +12,6 @@
ТекущаяБиблиотека = ""; ТекущаяБиблиотека = "";
ТекущаяТаблица = ""; ТекущаяТаблица = "";
СформироватьДополненяОписаний();
Для Каждого СтрокаСостава Из ТаблицаСостава Цикл Для Каждого СтрокаСостава Из ТаблицаСостава Цикл
Если ТекущаяБиблиотека <> СтрокаСостава.Библиотека Тогда Если ТекущаяБиблиотека <> СтрокаСостава.Библиотека Тогда
@ -57,45 +54,4 @@
КонецФункции КонецФункции
Функция ПолучитьИмяМодуля(Знач Команда = "") Экспорт
Если ЗначениеЗаполнено(Команда) Тогда
Значение = СоответствиеКомандМодулей[Команда];
Иначе
Значение = СоответствиеКомандМодулей;
КонецЕсли;
Если Не ЗначениеЗаполнено(Значение) Тогда
ВызватьИсключение "Команда не найдена: " + Команда;
Иначе
Возврат Значение;
КонецЕсли;
КонецФункции
Функция ПолучитьТаблицуПараметров(Знач Команда) Экспорт
Возврат СоответствиеТаблицПараметров[Команда];
КонецФункции
Функция СформироватьДополненяОписаний()
ТекстДополненияВК = "
| Структура JSON данных авторизации (параметр --auth):
| {
| ""access_token"": """",
| ""from_group"" : ""1"",
| ""owner_id"" : """",
| ""v"" : ""5.131"",
| ""app_id"" : """",
| ""group_id"" : """"
| }
|";
ДополнениеОписанияПараметров = Новый Соответствие;
ДополнениеОписанияПараметров.Вставить("vk", ТекстДополненияВК);
КонецФункции
#КонецОбласти #КонецОбласти
ПриСозданииОбъекта();

View File

@ -57,11 +57,11 @@
Процедура ОбработатьПараметрМассив(Значение) Процедура ОбработатьПараметрМассив(Значение)
Значение = СтрЗаменить(Значение, "['", ""); Значение = СтрЗаменить(Значение, "['" , "");
Значение = СтрЗаменить(Значение, "']", ""); Значение = СтрЗаменить(Значение, "']" , "");
Значение = СтрЗаменить(Значение, "', '", "','"); Значение = СтрЗаменить(Значение, "', '" , "','");
Значение = СтрЗаменить(Значение, "' , '", "','"); Значение = СтрЗаменить(Значение, "' , '", "','");
Значение = СтрЗаменить(Значение, "' ,'", "','"); Значение = СтрЗаменить(Значение, "' ,'" , "','");
Значение = СтрРазделить(Значение, "','", Ложь); Значение = СтрРазделить(Значение, "','", Ложь);