feat: Поддержка опции --output-dir #31

This commit is contained in:
Dmitry Ivanov
2024-11-17 19:43:08 +03:00
parent 121376ab7f
commit 45b6fe50f2
2 changed files with 40 additions and 1 deletions
@@ -2,6 +2,7 @@
#Использовать "../internal"
Перем ОписаниеЗапроса;
Перем КаталогСохраненияФайлов;
#Область ПрограммныйИнтерфейс
@@ -35,6 +36,7 @@
Приложение.Опция("cacert", "", "Файл сертификатов удостоверяющих центров").ТМассивСтрок();
Приложение.Опция("url-query", "", "Параметры строки запроса URL").ТМассивСтрок();
Приложение.Опция("o output", "", "Имя выходного файла").ТМассивСтрок();
Приложение.Опция("output-dir", "", "Каталог сохранения файлов").ТМассивСтрок();
УстановитьСтрокуИспользованияКоманды(Приложение);
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
@@ -69,6 +71,7 @@
Процедура ВыполнитьКоманду(Команда) Экспорт
ПрочитатьКаталогСохраненияФайлов(Команда);
ПрочитатьАдресаРесурсов(Команда);
ПрочитатьЗаголовки(Команда);
ПрочитатьПользователя(Команда);
@@ -119,6 +122,10 @@
ИмяВыходногоФайла = ИменаВыходныхФайлов[Индекс - 1];
КонецЕсли;
Если ЗначениеЗаполнено(КаталогСохраненияФайлов) Тогда
ИмяВыходногоФайла = КаталогСохраненияФайлов + "/" + ИмяВыходногоФайла;
КонецЕсли;
ОписаниеЗапроса.ДобавитьАдресРесурса(URL, ИмяВыходногоФайла);
КонецЦикла;
@@ -379,6 +386,14 @@
КонецПроцедуры
Процедура ПрочитатьКаталогСохраненияФайлов(Команда)
КаталогСохраненияФайлов = "";
Каталог = ПоследнееЗначениеОпции(Команда, "output-dir");
Если Не Каталог = Неопределено Тогда
КаталогСохраненияФайлов = Каталог;
КонецЕсли;
КонецПроцедуры
Функция ЕстьОпции(Команда, Опции)
Для Каждого Опция Из СтрРазделить(Опции, ",") Цикл
Если ЗначениеЗаполнено(Команда.ЗначениеОпции(Опция)) Тогда
@@ -412,4 +427,11 @@
КонецПроцедуры
Функция ПоследнееЗначениеОпции(Команда, ИмяОпции)
МассивЗначений = Команда.ЗначениеОпции(ИмяОпции);
Если ТипЗнч(МассивЗначений) = Тип("Массив") И МассивЗначений.Количество() Тогда
Возврат МассивЗначений[МассивЗначений.ВГраница()];
КонецЕсли;
КонецФункции
#КонецОбласти
@@ -33,6 +33,7 @@
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуПараметровЗапросаТолькоИзФайла");
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуВыходногоФайла");
СписокТестов.Добавить("ТестДолжен_ПроверитьПередачуНесколькихВыходныхФайлов");
СписокТестов.Добавить("ТестДолжен_ПроверитьКаталогСохраненияФайлов");
Возврат СписокТестов;
@@ -650,4 +651,20 @@
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
КонецПроцедуры
КонецПроцедуры
Процедура ТестДолжен_ПроверитьКаталогСохраненияФайлов() Экспорт
КонсольнаяКоманда = "curl http://example.com -o file.html --output-dir '/some/path'";
ПрограммныйКод = "Соединение = Новый HTTPСоединение(""example.com"", 80);
|
|HTTPЗапрос = Новый HTTPЗапрос(""/"");
|HTTPОтвет = Соединение.ВызватьHTTPМетод(""GET"", HTTPЗапрос, ""/some/path/file.html"");";
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
Результат = КонвертерКомандыCURL.Конвертировать(КонсольнаяКоманда, Новый ГенераторПрограммногоКода1С());
Ожидаем.Что(Результат).Равно(ПрограммныйКод);
КонецПроцедуры