1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2024-12-25 02:42:28 +02:00

Обновление зашифрованных данных по результатам тестов (workflow)

This commit is contained in:
Vitaly the Alpaca 2024-06-03 17:34:37 +00:00 committed by Vitaly the Alpaca (bot)
parent 3602708d7c
commit 70035e6ec7
2 changed files with 576 additions and 576 deletions

View File

@ -1,350 +1,350 @@
#Использовать cmdline
#Использовать "../../../OInt"
#Использовать "../../tools"
#Использовать "../../help"
#Использовать "../../data"
Перем Версия; // Версия программы
Перем Отладка; // Флаг вывода отладочной информации
Перем Тестирование; // Флаг отключения отправки данных после обработки
Перем Парсер; // Объект парсера входящих данных
Перем ОбъектОПИ; // Объект работы с методами ОПИ
Перем ФайлВывода; // Путь перенаправления вывода в файл
Перем ТаблицаПараметров; // Таблица параметров текущей библиотеки
Перем ТекущаяКоманда; // Имя текущей команды
Перем Команды; // Список всех доступных команд
#Область СлужебныеПроцедурыИФункции
#Область Основные
Процедура ОсновнойОбработчик()
Отладка = Ложь;
Тестирование = Ложь;
Парсер = Новый ПарсерАргументовКоманднойСтроки();
ОбъектОПИ = Новый СоставБиблиотеки();
Версия = ОбъектОПИ.ПолучитьВерсию();
Команды = ОбъектОПИ.ПолучитьСоответствиеКомандМодулей();
ОпределитьТекущуюКоманду();
СформироватьКоманду();
Результат = Парсер.Разобрать(АргументыКоманднойСтроки);
ВыполнитьОбработкуКоманды(Результат);
КонецПроцедуры
Процедура ОпределитьТекущуюКоманду()
Если АргументыКоманднойСтроки.Количество() > 0 Тогда
ТекущаяКоманда = АргументыКоманднойСтроки[0];
Иначе
ТекущаяКоманда = Неопределено;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьКоманду()
Если ТекущаяКоманда = Неопределено Тогда
Справка.ВывестиНачальнуюСтраницу(Команды, Версия);
Возврат;
КонецЕсли;
Команда = Парсер.ОписаниеКоманды(ТекущаяКоманда);
ТаблицаПараметров = ОбъектОПИ.ПолучитьСостав(ТекущаяКоманда);
Если Не ТаблицаПараметров = Неопределено Тогда
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Метод");
ДобавитьПараметрыКоманды(Парсер, Команда);
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--help");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--debug");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--test");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "--out");
Парсер.ДобавитьКоманду(Команда);
Иначе
Справка.ВывестиСообщениеИсключения("Команда");
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьОбработкуКоманды(Знач Данные)
ТекущаяКоманда = Данные["Команда"];
Параметры = Данные["ЗначенияПараметров"];
Вывод = "";
УстановитьРежимОтладки(Параметры);
УстановитьРежимТеста(Параметры);
УстановитьФайлВывода(Параметры);
ВывестиДопИнформацию(Параметры);
Попытка
Вывод = ПолучитьРезультатОбработки(ТекущаяКоманда, Параметры);
Если ЗначениеЗаполнено(Вывод) Тогда
ОбработатьВыводJSON(Вывод);
СообщитьРезультат(Вывод, СтатусСообщения.Внимание);
КонецЕсли;
Исключение
ОбработатьОшибочныйВывод(Вывод, ИнформацияОбОшибке());
КонецПопытки;
КонецПроцедуры
Функция ПолучитьРезультатОбработки(Знач Команда, Знач Параметры)
Модуль = Команды[Команда];
Метод = Параметры["Метод"];
Ответ = "Функция вернула пустое значение";
ЧислоСтандартныхПараметров = 4;
Если Не ЗначениеЗаполнено(Метод) Или Метод = "--help" Тогда
Справка.ВывестиСправкуПоМетодам(Команда, ТаблицаПараметров);
КонецЕсли;
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
ПараметрыМетода = ТаблицаПараметров.НайтиСтроки(ОтборКоманды);
Если Параметры.Количество() = ЧислоСтандартныхПараметров Или Параметры["--help"] Тогда
Справка.ВывестиСправкуПоПараметрам(ПараметрыМетода);
КонецЕсли;
ТекстВыполнения = СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
Если Отладка Или Тестирование Тогда
Сообщить(ТекстВыполнения, СтатусСообщения.Внимание);
КонецЕсли;
Если Не Тестирование Тогда
Выполнить(ТекстВыполнения);
КонецЕсли;
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область Вспомогательные
Процедура ДобавитьПараметрыКоманды(Парсер, Команда);
Параметр_ = "Параметр";
ТаблицаДляИспользования = ТаблицаПараметров.Скопировать(, Параметр_);
ТаблицаДляИспользования.Свернуть(Параметр_);
МассивПараметров = ТаблицаДляИспользования.ВыгрузитьКолонку(Параметр_);
Для Каждого Параметр Из МассивПараметров Цикл
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, Параметр);
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьВыводJSON(Вывод)
Если ТипЗнч(Вывод) = Тип("Структура")
Или ТипЗнч(Вывод) = Тип("Соответствие")
Или ТипЗнч(Вывод) = Тип("Массив") Тогда
Вывод = OPI_Инструменты.JSONСтрокой(Вывод);
КонецЕсли;
КонецПроцедуры
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач ПараметрыМетода, Знач Модуль, Знач Метод)
ТекстВыполнения = "";
СтрокаВызова = Модуль + "." + Метод + "(";
Счетчик = 0;
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
ИмяПараметра = НеобходимыйПараметр.Параметр;
ЗначениеПараметра = ПереданныеПараметры.Получить(ИмяПараметра);
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
ИмяПараметра = "Параметр" + СтрЗаменить(ИмяПараметра, "--", "_");
ТекстВыполнения = ТекстВыполнения
+ Символы.ПС
+ ИмяПараметра
+ " = """
+ СтрЗаменить(ЗначениеПараметра, """", """""")
+ """;";
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
Счетчик = Счетчик + 1;
Иначе
СтрокаВызова = СтрокаВызова + " , ";
КонецЕсли;
КонецЦикла;
ЛишниеСимволы = 2;
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
СтрокаВызова = СтрокаВызова + ");";
СтрокаВызова = "Ответ = " + СтрокаВызова;
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
Возврат ТекстВыполнения;
КонецФункции
Процедура УстановитьРежимОтладки(Знач Параметры)
Если Параметры["--debug"] Тогда
Отладка = Истина;
Иначе
Отладка = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура УстановитьРежимТеста(Знач Параметры)
Если Параметры["--test"] Тогда
Тестирование = Истина;
Иначе
Тестирование = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура УстановитьФайлВывода(Знач Параметры)
Вывод = Параметры["--out"];
Если ЗначениеЗаполнено(Вывод) Тогда
ФайлВывода = Вывод;
КонецЕсли;
КонецПроцедуры
Процедура ВывестиДопИнформацию(Параметры)
Если Отладка Или Тестирование Тогда
Для каждого ВводныйПараметр Из Параметры Цикл
Сообщить(ВводныйПараметр.Ключ + " : " + ВводныйПараметр.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьОшибочныйВывод(Вывод, ИнформацияОбОшибке)
Информация = "";
Если ЗначениеЗаполнено(Вывод) Тогда
Если Отладка Или Тестирование Тогда
Информация = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
КонецЕсли;
СообщитьРезультат(Вывод);
Иначе
Если Отладка Или Тестирование Тогда
Информация = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
Иначе
Информация = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
КонецЕсли;
КонецЕсли;
Справка.ВывестиСообщениеИсключения(Информация);
КонецПроцедуры
Процедура СообщитьРезультат(Знач Текст, Знач Статус = "")
Если Не ЗначениеЗаполнено(Статус) Тогда
Статус = СтатусСообщения.БезСтатуса;
КонецЕсли;
Если ЗначениеЗаполнено(ФайлВывода) Тогда
Текст = ЗаписатьЗначениеВФайл(Текст, ФайлВывода);
ИначеЕсли ТипЗнч(Текст) = Тип("ДвоичныеДанные") Тогда
Текст = "Похоже, что в ответе пришли двоичные данные! "
+ "В следующий раз используйте опцию --out для указания пути их сохранения";
Статус = СтатусСообщения.Информация;
Иначе
Текст = Строка(Текст);
КонецЕсли;
Сообщить(Текст, Статус);
КонецПроцедуры
Функция ЗаписатьЗначениеВФайл(Знач Значение, Знач Путь)
СтандартнаяЕдиница = 1024;
ЕдиницаДанных = СтандартнаяЕдиница * СтандартнаяЕдиница;
Значение = ?(ТипЗнч(Значение) = Тип("ДвоичныеДанные"), Значение, Строка(Значение));
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
Значение.Записать(Путь);
Иначе
ВозможныйФайл = Новый Файл(Значение);
Если ВозможныйФайл.Существует() Тогда
Путь = Значение;
Иначе
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(Значение);
ТекстовыйДокумент.Записать(Путь);
КонецЕсли;
КонецЕсли;
ЗаписанныйФайл = Новый Файл(Путь);
Если ЗаписанныйФайл.Существует() Тогда
Возврат "Файл размером "
+ Строка(Окр(ЗаписанныйФайл.Размер() / ЕдиницаДанных, 3))
+ " МБ был записан в "
+ ЗаписанныйФайл.ПолноеИмя;
Иначе
ВызватьИсключение "Файл не был записан! Используйте флаг --debug для получения дополнительной информации";
КонецЕсли;
КонецФункции
#КонецОбласти
#КонецОбласти
Попытка
ОсновнойОбработчик();
Исключение
Если Отладка Тогда
Информация = ОписаниеОшибки();
Иначе
Информация = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецЕсли;
Справка.ВывестиСообщениеИсключения(Информация);
КонецПопытки;
#Использовать cmdline
#Использовать "../../../OInt"
#Использовать "../../tools"
#Использовать "../../help"
#Использовать "../../data"
Перем Версия; // Версия программы
Перем Отладка; // Флаг вывода отладочной информации
Перем Тестирование; // Флаг отключения отправки данных после обработки
Перем Парсер; // Объект парсера входящих данных
Перем ОбъектОПИ; // Объект работы с методами ОПИ
Перем ФайлВывода; // Путь перенаправления вывода в файл
Перем ТаблицаПараметров; // Таблица параметров текущей библиотеки
Перем ТекущаяКоманда; // Имя текущей команды
Перем Команды; // Список всех доступных команд
#Область СлужебныеПроцедурыИФункции
#Область Основные
Процедура ОсновнойОбработчик()
Отладка = Ложь;
Тестирование = Ложь;
Парсер = Новый ПарсерАргументовКоманднойСтроки();
ОбъектОПИ = Новый СоставБиблиотеки();
Версия = ОбъектОПИ.ПолучитьВерсию();
Команды = ОбъектОПИ.ПолучитьСоответствиеКомандМодулей();
ОпределитьТекущуюКоманду();
СформироватьКоманду();
Результат = Парсер.Разобрать(АргументыКоманднойСтроки);
ВыполнитьОбработкуКоманды(Результат);
КонецПроцедуры
Процедура ОпределитьТекущуюКоманду()
Если АргументыКоманднойСтроки.Количество() > 0 Тогда
ТекущаяКоманда = АргументыКоманднойСтроки[0];
Иначе
ТекущаяКоманда = Неопределено;
КонецЕсли;
КонецПроцедуры
Процедура СформироватьКоманду()
Если ТекущаяКоманда = Неопределено Тогда
Справка.ВывестиНачальнуюСтраницу(Команды, Версия);
Возврат;
КонецЕсли;
Команда = Парсер.ОписаниеКоманды(ТекущаяКоманда);
ТаблицаПараметров = ОбъектОПИ.ПолучитьСостав(ТекущаяКоманда);
Если Не ТаблицаПараметров = Неопределено Тогда
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Метод");
ДобавитьПараметрыКоманды(Парсер, Команда);
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--help");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--debug");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "--test");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "--out");
Парсер.ДобавитьКоманду(Команда);
Иначе
Справка.ВывестиСообщениеИсключения("Команда");
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьОбработкуКоманды(Знач Данные)
ТекущаяКоманда = Данные["Команда"];
Параметры = Данные["ЗначенияПараметров"];
Вывод = "";
УстановитьРежимОтладки(Параметры);
УстановитьРежимТеста(Параметры);
УстановитьФайлВывода(Параметры);
ВывестиДопИнформацию(Параметры);
Попытка
Вывод = ПолучитьРезультатОбработки(ТекущаяКоманда, Параметры);
Если ЗначениеЗаполнено(Вывод) Тогда
ОбработатьВыводJSON(Вывод);
СообщитьРезультат(Вывод, СтатусСообщения.Внимание);
КонецЕсли;
Исключение
ОбработатьОшибочныйВывод(Вывод, ErrorInfo());
КонецПопытки;
КонецПроцедуры
Функция ПолучитьРезультатОбработки(Знач Команда, Знач Параметры)
Модуль = Команды[Команда];
Метод = Параметры["Метод"];
Ответ = "The function returned an empty value.";
ЧислоСтандартныхПараметров = 4;
Если Не ЗначениеЗаполнено(Метод) Или Метод = "--help" Тогда
Справка.ВывестиСправкуПоМетодам(Команда, ТаблицаПараметров);
КонецЕсли;
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
ПараметрыМетода = ТаблицаПараметров.НайтиСтроки(ОтборКоманды);
Если Параметры.Количество() = ЧислоСтандартныхПараметров Или Параметры["--help"] Тогда
Справка.ВывестиСправкуПоПараметрам(ПараметрыМетода);
КонецЕсли;
ТекстВыполнения = СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
Если Отладка Или Тестирование Тогда
Сообщить(ТекстВыполнения, СтатусСообщения.Внимание);
КонецЕсли;
Если Не Тестирование Тогда
Выполнить(ТекстВыполнения);
КонецЕсли;
Возврат Ответ;
КонецФункции
#КонецОбласти
#Область Вспомогательные
Процедура ДобавитьПараметрыКоманды(Парсер, Команда);
Параметр_ = "Параметр";
ТаблицаДляИспользования = ТаблицаПараметров.Скопировать(, Параметр_);
ТаблицаДляИспользования.Свернуть(Параметр_);
МассивПараметров = ТаблицаДляИспользования.ВыгрузитьКолонку(Параметр_);
Для Каждого Параметр Из МассивПараметров Цикл
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, Параметр);
КонецЦикла;
КонецПроцедуры
Процедура ОбработатьВыводJSON(Вывод)
Если ТипЗнч(Вывод) = Тип("Структура")
Или ТипЗнч(Вывод) = Тип("Соответствие")
Или ТипЗнч(Вывод) = Тип("Массив") Тогда
Вывод = OPI_Tools.JSONСтрокой(Вывод);
КонецЕсли;
КонецПроцедуры
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач ПараметрыМетода, Знач Модуль, Знач Метод)
ТекстВыполнения = "";
СтрокаВызова = Модуль + "." + Метод + "(";
Счетчик = 0;
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
ИмяПараметра = НеобходимыйПараметр.Параметр;
ЗначениеПараметра = ПереданныеПараметры.Получить(ИмяПараметра);
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
ИмяПараметра = "Параметр" + СтрЗаменить(ИмяПараметра, "--", "_");
ТекстВыполнения = ТекстВыполнения
+ Символы.ПС
+ ИмяПараметра
+ " = """
+ СтрЗаменить(ЗначениеПараметра, """", """""")
+ """;";
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
Счетчик = Счетчик + 1;
Иначе
СтрокаВызова = СтрокаВызова + " , ";
КонецЕсли;
КонецЦикла;
ЛишниеСимволы = 2;
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
СтрокаВызова = СтрокаВызова + ");";
СтрокаВызова = "Ответ = " + СтрокаВызова;
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
Возврат ТекстВыполнения;
КонецФункции
Процедура УстановитьРежимОтладки(Знач Параметры)
Если Параметры["--debug"] Тогда
Отладка = Истина;
Иначе
Отладка = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура УстановитьРежимТеста(Знач Параметры)
Если Параметры["--test"] Тогда
Тестирование = Истина;
Иначе
Тестирование = Ложь;
КонецЕсли;
КонецПроцедуры
Процедура УстановитьФайлВывода(Знач Параметры)
Вывод = Параметры["--out"];
Если ЗначениеЗаполнено(Вывод) Тогда
ФайлВывода = Вывод;
КонецЕсли;
КонецПроцедуры
Процедура ВывестиДопИнформацию(Параметры)
Если Отладка Или Тестирование Тогда
Для каждого ВводныйПараметр Из Параметры Цикл
Сообщить(ВводныйПараметр.Ключ + " : " + ВводныйПараметр.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ОбработатьОшибочныйВывод(Вывод, ErrorInfo)
Информация = "";
Если ЗначениеЗаполнено(Вывод) Тогда
Если Отладка Или Тестирование Тогда
Информация = ПодробноеПредставлениеОшибки(ErrorInfo);
КонецЕсли;
СообщитьРезультат(Вывод);
Иначе
Если Отладка Или Тестирование Тогда
Информация = ПодробноеПредставлениеОшибки(ErrorInfo);
Иначе
Информация = BriefErrorDescription(ErrorInfo);
КонецЕсли;
КонецЕсли;
Справка.ВывестиСообщениеИсключения(Информация);
КонецПроцедуры
Процедура СообщитьРезультат(Знач Текст, Знач Статус = "")
Если Не ЗначениеЗаполнено(Статус) Тогда
Статус = СтатусСообщения.БезСтатуса;
КонецЕсли;
Если ЗначениеЗаполнено(ФайлВывода) Тогда
Текст = ЗаписатьЗначениеВФайл(Текст, ФайлВывода);
ИначеЕсли ТипЗнч(Текст) = Тип("ДвоичныеДанные") Тогда
Текст = "It seems that binary data was returned in the response! "
+ "Next time, use the --out option to specify the path for saving them";
Статус = СтатусСообщения.Информация;
Иначе
Текст = Строка(Текст);
КонецЕсли;
Сообщить(Текст, Статус);
КонецПроцедуры
Функция ЗаписатьЗначениеВФайл(Знач Значение, Знач Путь)
СтандартнаяЕдиница = 1024;
ЕдиницаДанных = СтандартнаяЕдиница * СтандартнаяЕдиница;
Значение = ?(ТипЗнч(Значение) = Тип("ДвоичныеДанные"), Значение, Строка(Значение));
Если ТипЗнч(Значение) = Тип("ДвоичныеДанные") Тогда
Значение.Записать(Путь);
Иначе
ВозможныйФайл = Новый Файл(Значение);
Если ВозможныйФайл.Существует() Тогда
Путь = Значение;
Иначе
ТекстовыйДокумент = Новый ТекстовыйДокумент();
ТекстовыйДокумент.УстановитьТекст(Значение);
ТекстовыйДокумент.Записать(Путь);
КонецЕсли;
КонецЕсли;
ЗаписанныйФайл = Новый Файл(Путь);
Если ЗаписанныйФайл.Существует() Тогда
Возврат "File (Size "
+ Строка(Окр(ЗаписанныйФайл.Размер() / ЕдиницаДанных, 3))
+ " MB) has been written to "
+ ЗаписанныйФайл.ПолноеИмя;
Иначе
ВызватьИсключение "The file was not written! Use the --debug flag for additional information";
КонецЕсли;
КонецФункции
#КонецОбласти
#КонецОбласти
Попытка
ОсновнойОбработчик();
Исключение
Если Отладка Тогда
Информация = ErrorDescription();
Иначе
Информация = BriefErrorDescription(ErrorInfo());
КонецЕсли;
Справка.ВывестиСообщениеИсключения(Информация);
КонецПопытки;

View File

@ -1,226 +1,226 @@
#Использовать "../../tools"
#Использовать coloratos
#Область СлужебныйПрограммныйИнтерфейс
Процедура ВывестиНачальнуюСтраницу(Знач СоответствиеКомандМодулей, Знач Версия) Экспорт
СписокКоманд = "";
Для Каждого Команда Из СоответствиеКомандМодулей Цикл
СписокКоманд = СписокКоманд + Команда.Ключ + ", ";
КонецЦикла;
ЛишниеСимволы = 2;
СписокКоманд = Лев(СписокКоманд, СтрДлина(СписокКоманд) - ЛишниеСимволы);
Консоль.ЦветТекста = ЦветКонсоли.Зеленый;
Консоль.ВывестиСтроку("-----------------------------------------------------");
Консоль.ВывестиСтроку("");
Консоль.ЦветТекста = ЦветКонсоли.Желтый;
ЦветнойВывод.Вывести("
| _______ _____________ ___ _______
| __ __ ___/__ _/_ / | / /___ __/
| _ / / / __ / __ / __ /
| / /_/ / __/ / _ /| / _ /
| \____/ /___/ /_/ |_/ /_/
|
|
| Добро пожаловать в (OInt|#color=Белый) v (" + Версия + "|#color=Зеленый)!
|
| Структура вызова:
|
| "
+ "(oint|#color=Белый) "
+ "(<бибилотека>|#color=Бирюза) "
+ "(<метод>|#color=Бирюза) "
+ "(--опция1|#color=Серый) "
+ "(""|#color=Зеленый)"
+ "(Значение|#color=Белый)"
+ "(""|#color=Зеленый) "
+ "(...|#color=Белый) "
+ "(--опцияN|#color=Серый) "
+ "(""|#color=Зеленый)"
+ "(Значение|#color=Белый)"
+ "(""|#color=Зеленый) ");
Консоль.Вывести("
|
| Вызов библиотеки без метода или метода без параметров возвращает справку
| Список доступных библиотек: ");
Консоль.ЦветТекста = ЦветКонсоли.Белый;
Консоль.Вывести(СписокКоманд);
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЦветнойВывод.ВывестиСтроку("
|
| (Стандартные опции:|#color=Желтый)
|
| (--help|#color=Зеленый) - выводит справку по текущей команде или методу. Аналогично вызову команды без опций
| (--debug|#color=Зеленый) - флаг, отвечающий за предоставление более подробной информации при работе программы
| (--out|#color=Зеленый) - путь к файлу сохранения результата (двоичных данных в частности)
|");
Консоль.ЦветТекста = ЦветКонсоли.Желтый;
ЦветнойВывод.ВывестиСтроку(" Полную документацию можно найти по адресу: (https://openintegrations.dev|#color=Бирюза)" + Символы.ПС);
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЗавершитьРаботу(0);
КонецПроцедуры
Процедура ВывестиСправкуПоМетодам(Знач Команда, Знач ТаблицаПараметров) Экспорт
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЦветнойВывод.ВывестиСтроку(Символы.ПС + " (##|#color=Зеленый) Библиотека - (" + Команда + "|#color=Бирюза)");
ТаблицаПараметров.Свернуть("Метод,Область");
ЦветнойВывод.ВывестиСтроку(" (##|#color=Зеленый) Доступные методы: " + Символы.ПС);
Консоль.ЦветТекста = ЦветКонсоли.Желтый;
ТекущаяОбласть = "";
Счетчик = 0;
КоличествоПараметров = ТаблицаПараметров.Количество();
Для каждого СтрокаМетода Из ТаблицаПараметров Цикл
Первый = Ложь;
Последний = Ложь;
Если ТекущаяОбласть <> СтрокаМетода.Область Тогда
ТекущаяОбласть = СтрокаМетода.Область;
ЦветнойВывод.ВывестиСтроку(" (o|#color=Белый) (" + ТекущаяОбласть + "|#color=Бирюза)");
Первый = Истина;
КонецЕсли;
Если Счетчик >= КоличествоПараметров - 1 Тогда
Последний = Истина;
Иначе
Последний = ТаблицаПараметров[Счетчик + 1].Область <> ТекущаяОбласть;
КонецЕсли;
Если Первый И Последний Тогда
Метка = "└───";
ИначеЕсли Первый Тогда
Метка = "└─┬─";
ИначеЕсли Последний Тогда
Метка = " └─";
Иначе
Метка = " ├─";
КонецЕсли;
ЦветнойВывод.ВывестиСтроку(" (" + Метка + "|#color=Белый) " + СтрокаМетода.Метод);
Счетчик = Счетчик + 1;
КонецЦикла;
Сообщить(Символы.ПС);
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЗавершитьРаботу(0);
КонецПроцедуры
Процедура ВывестиСправкуПоПараметрам(Знач ТаблицаПараметров) Экспорт
Если ТаблицаПараметров.Количество() = 0 Тогда
ВывестиСообщениеИсключения("Метод");
КонецЕсли;
ИмяМетода = ТаблицаПараметров[0].Метод;
ТекстСправки = "
| (##|#color=Зеленый) Метод (" + ИмяМетода + "|#color=Бирюза)
| (##|#color=Зеленый) " + ТаблицаПараметров[0].ОписаниеМетода;
ЦветнойВывод.ВывестиСтроку(ТекстСправки);
ТекстСправки = "";
ОбработатьТабуляциюСправки(ТаблицаПараметров);
Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл
ТекстСправки = ТекстСправки
+ Символы.ПС
+ " ("
+ ПараметрМетода["Параметр"]
+ "|#color=Желтый) - "
+ ПараметрМетода["Описание"];
КонецЦикла;
ЦветнойВывод.ВывестиСтроку(ТекстСправки + Символы.ПС);
ЗавершитьРаботу(0);
КонецПроцедуры
Процедура ВывестиСообщениеИсключения(Знач Причина) Экспорт
Если Причина = "Команда" Тогда
Текст = "Некорректная команда! Проверьте правильность ввода";
Код = 1;
ИначеЕсли Причина = "Метод" Тогда
Текст = "Некорректный метод! Проверьте правильность ввода";
Код = 2;
Иначе
Текст = "Непредвиденная ошибка!: " + Причина;
Код = 99;
КонецЕсли;
Текст = Символы.ПС + Текст + Символы.ПС;
Сообщить(Текст, СтатусСообщения.ОченьВажное);
ЗавершитьРаботу(Код);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ОбработатьТабуляциюСправки(ТаблицаПараметров)
Параметр_ = "Параметр";
МаксимальнаяДлина = 15;
Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл
Пока Не СтрДлина(ПараметрМетода[Параметр_]) = МаксимальнаяДлина Цикл
ПараметрМетода[Параметр_] = ПараметрМетода[Параметр_] + " ";
КонецЦикла;
ТекущееОписание = ПараметрМетода["Описание"];
МассивОписания = СтрРазделить(ТекущееОписание, Символы.ПС);
НачальнаяТабуляция = 4;
Если МассивОписания.Количество() = 1 Тогда
Продолжить;
Иначе
Для Н = 1 По МассивОписания.ВГраница() Цикл
ТекущийЭлемент = МассивОписания[Н];
НеобходимаяДлина = СтрДлина(ТекущийЭлемент) + СтрДлина(ПараметрМетода[Параметр_] + " - ") + НачальнаяТабуляция;
Пока СтрДлина(МассивОписания[Н]) < НеобходимаяДлина Цикл
МассивОписания[Н] = " " + МассивОписания[Н];
КонецЦикла;
КонецЦикла;
ПараметрМетода["Описание"] = СтрСоединить(МассивОписания, Символы.ПС);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Использовать "../../tools"
#Использовать coloratos
#Область СлужебныйПрограммныйИнтерфейс
Процедура ВывестиНачальнуюСтраницу(Знач СоответствиеКомандМодулей, Знач Версия) Экспорт
СписокКоманд = "";
Для Каждого Команда Из СоответствиеКомандМодулей Цикл
СписокКоманд = СписокКоманд + Команда.Ключ + ", ";
КонецЦикла;
ЛишниеСимволы = 2;
СписокКоманд = Лев(СписокКоманд, СтрДлина(СписокКоманд) - ЛишниеСимволы);
Консоль.ЦветТекста = ЦветКонсоли.Зеленый;
Консоль.ВывестиСтроку("-----------------------------------------------------");
Консоль.ВывестиСтроку("");
Консоль.ЦветТекста = ЦветКонсоли.Желтый;
ЦветнойВывод.Вывести("
| _______ _____________ ___ _______
| __ __ ___/__ _/_ / | / /___ __/
| _ / / / __ / __ / __ /
| / /_/ / __/ / _ /| / _ /
| \____/ /___/ /_/ |_/ /_/
|
|
| Welcome to (OInt|#color=Белый) v (" + Версия + "|#color=Зеленый)!
|
| The structure of calls:
|
| "
+ "(oint|#color=Белый) "
+ "(<library>|#color=Бирюза) "
+ "(<method>|#color=Бирюза) "
+ "(--option1|#color=Серый) "
+ "(""|#color=Зеленый)"
+ "(Value|#color=Белый)"
+ "(""|#color=Зеленый) "
+ "(...|#color=Белый) "
+ "(--optionN|#color=Серый) "
+ "(""|#color=Зеленый)"
+ "(Value|#color=Белый)"
+ "(""|#color=Зеленый) ");
Консоль.Вывести("
|
| Calling a library without a method or a method without parameters returns help
| List of available libraries: ");
Консоль.ЦветТекста = ЦветКонсоли.Белый;
Консоль.Вывести(СписокКоманд);
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЦветнойВывод.ВывестиСтроку("
|
| (Common options:|#color=Желтый)
|
| (--help|#color=Зеленый) - displays help for the current command or method. Similar to calling the command without options.
| (--debug|#color=Зеленый) - the flag responsible for providing more detailed information during program execution
| (--out|#color=Зеленый) - the path for saving the result (especially, for binary data)
|");
Консоль.ЦветТекста = ЦветКонсоли.Желтый;
ЦветнойВывод.ВывестиСтроку(" You can find the full documentation at the following address (https://openintegrations.dev|#color=Бирюза)" + Символы.ПС);
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЗавершитьРаботу(0);
КонецПроцедуры
Процедура ВывестиСправкуПоМетодам(Знач Команда, Знач ТаблицаПараметров) Экспорт
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЦветнойВывод.ВывестиСтроку(Символы.ПС + " (##|#color=Зеленый) Library - (" + Команда + "|#color=Бирюза)");
ТаблицаПараметров.Свернуть("Метод,Область");
ЦветнойВывод.ВывестиСтроку(" (##|#color=Зеленый) Available methods" + Символы.ПС);
Консоль.ЦветТекста = ЦветКонсоли.Желтый;
ТекущаяОбласть = "";
Счетчик = 0;
КоличествоПараметров = ТаблицаПараметров.Количество();
Для каждого СтрокаМетода Из ТаблицаПараметров Цикл
Первый = Ложь;
Последний = Ложь;
Если ТекущаяОбласть <> СтрокаМетода.Область Тогда
ТекущаяОбласть = СтрокаМетода.Область;
ЦветнойВывод.ВывестиСтроку(" (o|#color=Белый) (" + ТекущаяОбласть + "|#color=Бирюза)");
Первый = Истина;
КонецЕсли;
Если Счетчик >= КоличествоПараметров - 1 Тогда
Последний = Истина;
Иначе
Последний = ТаблицаПараметров[Счетчик + 1].Область <> ТекущаяОбласть;
КонецЕсли;
Если Первый И Последний Тогда
Метка = "└───";
ИначеЕсли Первый Тогда
Метка = "└─┬─";
ИначеЕсли Последний Тогда
Метка = " └─";
Иначе
Метка = " ├─";
КонецЕсли;
ЦветнойВывод.ВывестиСтроку(" (" + Метка + "|#color=Белый) " + СтрокаМетода.Метод);
Счетчик = Счетчик + 1;
КонецЦикла;
Сообщить(Символы.ПС);
Консоль.ЦветТекста = ЦветКонсоли.Белый;
ЗавершитьРаботу(0);
КонецПроцедуры
Процедура ВывестиСправкуПоПараметрам(Знач ТаблицаПараметров) Экспорт
Если ТаблицаПараметров.Количество() = 0 Тогда
ВывестиСообщениеИсключения("Метод");
КонецЕсли;
ИмяМетода = ТаблицаПараметров[0].Метод;
ТекстСправки = "
| (##|#color=Зеленый) Method (" + ИмяМетода + "|#color=Бирюза)
| (##|#color=Зеленый) " + ТаблицаПараметров[0].ОписаниеМетода;
ЦветнойВывод.ВывестиСтроку(ТекстСправки);
ТекстСправки = "";
ОбработатьТабуляциюСправки(ТаблицаПараметров);
Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл
ТекстСправки = ТекстСправки
+ Символы.ПС
+ " ("
+ ПараметрМетода["Параметр"]
+ "|#color=Желтый) - "
+ ПараметрМетода["Описание"];
КонецЦикла;
ЦветнойВывод.ВывестиСтроку(ТекстСправки + Символы.ПС);
ЗавершитьРаботу(0);
КонецПроцедуры
Процедура ВывестиСообщениеИсключения(Знач Причина) Экспорт
Если Причина = "Команда" Тогда
Текст = "Invalid command! Please, check the input.";
Код = 1;
ИначеЕсли Причина = "Метод" Тогда
Текст = "Invalid method! Please, check the input.";
Код = 2;
Иначе
Текст = "An unexpected error occurred! " + Причина;
Код = 99;
КонецЕсли;
Текст = Символы.ПС + Текст + Символы.ПС;
Сообщить(Текст, СтатусСообщения.ОченьВажное);
ЗавершитьРаботу(Код);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ОбработатьТабуляциюСправки(ТаблицаПараметров)
Параметр_ = "Параметр";
МаксимальнаяДлина = 15;
Для Каждого ПараметрМетода Из ТаблицаПараметров Цикл
Пока Не СтрДлина(ПараметрМетода[Параметр_]) = МаксимальнаяДлина Цикл
ПараметрМетода[Параметр_] = ПараметрМетода[Параметр_] + " ";
КонецЦикла;
ТекущееОписание = ПараметрМетода["Описание"];
МассивОписания = СтрРазделить(ТекущееОписание, Символы.ПС);
НачальнаяТабуляция = 4;
Если МассивОписания.Количество() = 1 Тогда
Продолжить;
Иначе
Для Н = 1 По МассивОписания.ВГраница() Цикл
ТекущийЭлемент = МассивОписания[Н];
НеобходимаяДлина = СтрДлина(ТекущийЭлемент) + СтрДлина(ПараметрМетода[Параметр_] + " - ") + НачальнаяТабуляция;
Пока СтрДлина(МассивОписания[Н]) < НеобходимаяДлина Цикл
МассивОписания[Н] = " " + МассивОписания[Н];
КонецЦикла;
КонецЦикла;
ПараметрМетода["Описание"] = СтрСоединить(МассивОписания, Символы.ПС);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти