1
0
mirror of https://github.com/alei1180/curlone.git synced 2025-11-25 23:01:55 +02:00

refactor: Перенос обработки аргументов команды в отдельную функцию

This commit is contained in:
Dmitry Ivanov
2025-01-10 23:46:12 +03:00
parent d4674dfaae
commit 05142c1879

View File

@@ -59,26 +59,16 @@
НомерКоманды = НомерКоманды + 1; НомерКоманды = НомерКоманды + 1;
ОписаниеЗапроса = Новый ОписаниеЗапроса(); ОписаниеЗапроса = Новый ОписаниеЗапроса();
Если Не ПроверитьЧтоКомандаНачинаетсяСCurl(АргументыКоманды, НомерКоманды, КоличествоКоманд) Тогда ОбработатьАргументыКоманды(АргументыКоманды, НомерКоманды, КоличествоКоманд);
Возврат ПустойРезультат;
КонецЕсли;
АргументыКоманды.Удалить(0); // Удаляем curl
Попытка
Приложение = СоздатьКонсольноеПриложение();
Команда = Приложение.ПолучитьКоманду();
Команда.УстановитьДействиеВывестиСправку(ЭтотОбъект, "Заглушка");
Приложение.Запустить(АргументыКоманды);
Исключение
ОбработатьИсключениеОбработкиКоманды(ИнформацияОбОшибке());
Возврат ПустойРезультат;
КонецПопытки;
ПроверитьНаличиеURL(ОписаниеЗапроса); ПроверитьНаличиеURL(ОписаниеЗапроса);
ПроверитьПоддержкуПротокола(ОписаниеЗапроса, Генератор.ПоддерживаемыеПротоколы()); ПроверитьПоддержкуПротокола(ОписаниеЗапроса, Генератор.ПоддерживаемыеПротоколы());
СгенерированныйКод = "";
Если Не ОбщегоНазначения.ЕстьКритичныеОшибки(ИсходящиеОшибки) Тогда
СгенерированныйКод = Генератор.Получить(ОписаниеЗапроса, ИсходящиеОшибки); СгенерированныйКод = Генератор.Получить(ОписаниеЗапроса, ИсходящиеОшибки);
КонецЕсли;
ВывестиСгенерированныйКодКоманды(Результат, СгенерированныйКод, НомерКоманды, КоличествоКоманд); ВывестиСгенерированныйКодКоманды(Результат, СгенерированныйКод, НомерКоманды, КоличествоКоманд);
Если ОбщегоНазначения.ЕстьКритичныеОшибки(ИсходящиеОшибки) Тогда Если ОбщегоНазначения.ЕстьКритичныеОшибки(ИсходящиеОшибки) Тогда
@@ -1085,7 +1075,24 @@
КонецФункции КонецФункции
Процедура ОбработатьИсключениеОбработкиКоманды(ИнформацияОбОшибке) Процедура ОбработатьАргументыКоманды(АргументыКоманды, НомерКоманды, КоличествоКоманд)
ПроверитьЧтоКомандаНачинаетсяСCurl(АргументыКоманды, НомерКоманды, КоличествоКоманд);
АргументыКоманды.Удалить(0); // Удаляем curl
Попытка
Приложение = СоздатьКонсольноеПриложение();
Команда = Приложение.ПолучитьКоманду();
Команда.УстановитьДействиеВывестиСправку(ЭтотОбъект, "Заглушка");
Приложение.Запустить(АргументыКоманды);
Исключение
ОбработатьИсключениеЗапускаКонсольногоПриложения(ИнформацияОбОшибке());
КонецПопытки;
КонецПроцедуры
Процедура ОбработатьИсключениеЗапускаКонсольногоПриложения(ИнформацияОбОшибке)
Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке); Текст = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
@@ -1126,44 +1133,47 @@
КонецПроцедуры КонецПроцедуры
Функция ПроверитьЧтоКомандаНачинаетсяСCurl(АргументыКоманды, НомерКоманды, КоличествоКоманд) Процедура ПроверитьЧтоКомандаНачинаетсяСCurl(АргументыКоманды, НомерКоманды, КоличествоКоманд)
Если (НРег(АргументыКоманды[0]) = "curl") Тогда Если ОбщегоНазначения.ЕстьКритичныеОшибки(ИсходящиеОшибки) Тогда
Возврат Истина; Возврат;
КонецЕсли; КонецЕсли;
Если Не (НРег(АргументыКоманды[0]) = "curl") Тогда
НомерКомандыТекст = ?(КоличествоКоманд > 1, СтрШаблон("#%1 ", НомерКоманды), ""); НомерКомандыТекст = ?(КоличествоКоманд > 1, СтрШаблон("#%1 ", НомерКоманды), "");
Текст = СтрШаблон("Команда %1должна начинаться с ""curl"", но вместо этого начинается с %2", НомерКомандыТекст, АргументыКоманды[0]); Текст = СтрШаблон("Команда %1должна начинаться с ""curl"", но вместо этого начинается с %2", НомерКомандыТекст, АргументыКоманды[0]);
ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка(Текст)); ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка(Текст));
Возврат Ложь; КонецЕсли;
КонецФункции КонецПроцедуры
Функция ПроверитьНаличиеURL(ОписаниеЗапроса) Процедура ПроверитьНаличиеURL(ОписаниеЗапроса)
Если ОбщегоНазначения.ЕстьКритичныеОшибки(ИсходящиеОшибки) Тогда
Возврат;
КонецЕсли;
Если ОписаниеЗапроса.АдресаРесурсов.Количество() = 0 Тогда Если ОписаниеЗапроса.АдресаРесурсов.Количество() = 0 Тогда
ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка("Не указан URL")); ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка("Не указан URL"));
Возврат Ложь;
КонецЕсли; КонецЕсли;
Возврат Истина; КонецПроцедуры
КонецФункции Процедура ПроверитьПоддержкуПротокола(ОписаниеЗапроса, ПоддерживаемыеПротоколы)
Функция ПроверитьПоддержкуПротокола(ОписаниеЗапроса, ПоддерживаемыеПротоколы) Если ОбщегоНазначения.ЕстьКритичныеОшибки(ИсходящиеОшибки) Тогда
Возврат;
КонецЕсли;
Для Каждого ОписаниеРесурса Из ОписаниеЗапроса.АдресаРесурсов Цикл Для Каждого ОписаниеРесурса Из ОписаниеЗапроса.АдресаРесурсов Цикл
СтруктураURL = Новый ПарсерURL(ОписаниеРесурса.URL); СтруктураURL = Новый ПарсерURL(ОписаниеРесурса.URL);
Если ПоддерживаемыеПротоколы.Найти(СтруктураURL.Схема) = Неопределено Тогда Если ПоддерживаемыеПротоколы.Найти(СтруктураURL.Схема) = Неопределено Тогда
ТекстОшибки = СтрШаблон("Протокол ""%1"" не поддерживается", СтруктураURL.Схема); ТекстОшибки = СтрШаблон("Протокол ""%1"" не поддерживается", СтруктураURL.Схема);
ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка(ТекстОшибки)); ИсходящиеОшибки.Добавить(ОбщегоНазначения.НоваяКритичнаяОшибка(ТекстОшибки));
Возврат Ложь;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
Возврат Истина; КонецПроцедуры
КонецФункции
Процедура ВывестиРазделительКоманд(Результат, НомерКоманды, КоличествоКоманд) Процедура ВывестиРазделительКоманд(Результат, НомерКоманды, КоличествоКоманд)