1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-08-13 20:05:19 +02:00

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

This commit is contained in:
Vitaly the Alpaca
2024-07-19 07:47:02 +00:00
committed by Vitaly the Alpaca (bot)
parent ef07f3b2fd
commit a1c8a18480
2 changed files with 351 additions and 351 deletions

View File

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

View File

@@ -11,4 +11,4 @@
.ЗависитОт("oint") .ЗависитОт("oint")
.ЗависитОт("cmdline") .ЗависитОт("cmdline")
.ЗависитОт("coloratos") .ЗависитОт("coloratos")
.ИсполняемыйФайл("core/Classes/app.os", "oint"); .ИсполняемыйФайл("core/Classes/app.os", "oint")