1
0
mirror of https://github.com/alei1180/curlone.git synced 2025-11-26 23:10:24 +02:00

Merge pull request #58 from Stivo182/unsupported-options

Добавление неподдерживаемых опций
This commit is contained in:
Dmitry Ivanov
2024-12-25 16:26:39 +03:00
committed by GitHub
2 changed files with 313 additions and 2 deletions

View File

@@ -43,6 +43,23 @@
КонецФункции
Функция ПоддерживаемыеОпции() Экспорт
Приложение = СоздатьКонсольноеПриложение(Истина);
МассивОпций = Новый Массив();
ТаблицаОпций = Приложение.ПолучитьКоманду().ПолучитьТаблицуОпций();
Для Каждого СтрокаТаблицы Из ТаблицаОпций Цикл
Для Каждого Опция Из СтрокаТаблицы.НаименованияПараметров Цикл
МассивОпций.Добавить(Опция);
КонецЦикла;
КонецЦикла;
Возврат МассивОпций;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -566,7 +583,7 @@
КонецПроцедуры
Функция СоздатьКонсольноеПриложение()
Функция СоздатьКонсольноеПриложение(ТолькоПоддерживаемые = Ложь)
Приложение = Новый КонсольноеПриложение("curl", "", ЭтотОбъект);
Приложение.УстановитьСпек("[ANY]");
@@ -599,7 +616,240 @@
Приложение.Опция("connect-timeout", 0, "Максимальное время ожидания на попытку соединения к хосту").ТМассивЧисел();
Приложение.Опция("json", "", "Данные JSON").ТМассивСтрок();
Приложение.Опция("A user-agent", "", "HTTP заголовок запроса User-Agent").ТМассивСтрок();
Если Не ТолькоПоддерживаемые Тогда
Приложение.Опция("abstract-unix-socket").ТМассивСтрок();
Приложение.Опция("alt-svc").ТМассивСтрок();
Приложение.Опция("anyauth").ТМассивСтрок();
Приложение.Опция("a append").ТМассивСтрок();
Приложение.Опция("aws-sigv4").ТМассивСтрок();
Приложение.Опция("basic").ТМассивСтрок();
Приложение.Опция("capath").ТМассивСтрок();
Приложение.Опция("cert-status").ТМассивСтрок();
Приложение.Опция("cert-type").ТМассивСтрок();
Приложение.Опция("ciphers").ТМассивСтрок();
Приложение.Опция("compressed").ТМассивСтрок();
Приложение.Опция("compressed-ssh").ТМассивСтрок();
Приложение.Опция("K config").ТМассивСтрок();
Приложение.Опция("connect-to").ТМассивСтрок();
Приложение.Опция("C continue-at").ТМассивСтрок();
Приложение.Опция("b cookie").ТМассивСтрок();
Приложение.Опция("c cookie-jar").ТМассивСтрок();
Приложение.Опция("create-dirs").ТМассивСтрок();
Приложение.Опция("create-file-mode").ТМассивСтрок();
Приложение.Опция("crlf").ТМассивСтрок();
Приложение.Опция("crlfile").ТМассивСтрок();
Приложение.Опция("curves").ТМассивСтрок();
Приложение.Опция("delegation").ТМассивСтрок();
Приложение.Опция("digest").ТМассивСтрок();
Приложение.Опция("q disable").ТМассивСтрок();
Приложение.Опция("disable-eprt").ТМассивСтрок();
Приложение.Опция("disable-epsv").ТМассивСтрок();
Приложение.Опция("disallow-username-in-url").ТМассивСтрок();
Приложение.Опция("dns-interface").ТМассивСтрок();
Приложение.Опция("dns-ipv4-addr").ТМассивСтрок();
Приложение.Опция("dns-ipv6-addr").ТМассивСтрок();
Приложение.Опция("dns-servers").ТМассивСтрок();
Приложение.Опция("doh-cert-status").ТМассивСтрок();
Приложение.Опция("doh-insecure").ТМассивСтрок();
Приложение.Опция("doh-url").ТМассивСтрок();
Приложение.Опция("dump-ca-embed").ТМассивСтрок();
Приложение.Опция("D dump-header").ТМассивСтрок();
Приложение.Опция("ech").ТМассивСтрок();
Приложение.Опция("egd-file").ТМассивСтрок();
Приложение.Опция("engine").ТМассивСтрок();
Приложение.Опция("etag-compare").ТМассивСтрок();
Приложение.Опция("etag-save").ТМассивСтрок();
Приложение.Опция("expect100-timeout").ТМассивСтрок();
Приложение.Опция("f fail").ТМассивСтрок();
Приложение.Опция("fail-early").ТМассивСтрок();
Приложение.Опция("fail-with-body").ТМассивСтрок();
Приложение.Опция("false-start").ТМассивСтрок();
Приложение.Опция("F form").ТМассивСтрок();
Приложение.Опция("form-escape").ТМассивСтрок();
Приложение.Опция("form-string").ТМассивСтрок();
Приложение.Опция("ftp-account").ТМассивСтрок();
Приложение.Опция("ftp-alternative-to-user").ТМассивСтрок();
Приложение.Опция("ftp-create-dirs").ТМассивСтрок();
Приложение.Опция("ftp-method").ТМассивСтрок();
Приложение.Опция("ftp-pasv").ТМассивСтрок();
Приложение.Опция("P ftp-port").ТМассивСтрок();
Приложение.Опция("ftp-pret").ТМассивСтрок();
Приложение.Опция("ftp-skip-pasv-ip").ТМассивСтрок();
Приложение.Опция("ftp-ssl-ccc").ТМассивСтрок();
Приложение.Опция("ftp-ssl-ccc-mode").ТМассивСтрок();
Приложение.Опция("ftp-ssl-control").ТМассивСтрок();
Приложение.Опция("g globoff").ТМассивСтрок();
Приложение.Опция("happy-eyeballs-timeout-ms").ТМассивСтрок();
Приложение.Опция("haproxy-clientip").ТМассивСтрок();
Приложение.Опция("haproxy-protocol").ТМассивСтрок();
Приложение.Опция("h help").ТМассивСтрок();
Приложение.Опция("hostpubmd5").ТМассивСтрок();
Приложение.Опция("hostpubsha256").ТМассивСтрок();
Приложение.Опция("hsts").ТМассивСтрок();
Приложение.Опция("http0").ТМассивСтрок();
Приложение.Опция("http1").ТМассивСтрок();
Приложение.Опция("http2").ТМассивСтрок();
Приложение.Опция("http2-prior-knowledge").ТМассивСтрок();
Приложение.Опция("http3").ТМассивСтрок();
Приложение.Опция("http3-only").ТМассивСтрок();
Приложение.Опция("ignore-content-length").ТМассивСтрок();
Приложение.Опция("k insecure").ТМассивСтрок();
Приложение.Опция("interface").ТМассивСтрок();
Приложение.Опция("ip-tos").ТМассивСтрок();
Приложение.Опция("ipfs-gateway").ТМассивСтрок();
Приложение.Опция("j junk-session-cookies").ТМассивСтрок();
Приложение.Опция("keepalive-cnt").ТМассивСтрок();
Приложение.Опция("keepalive-time").ТМассивСтрок();
Приложение.Опция("key").ТМассивСтрок();
Приложение.Опция("key-type").ТМассивСтрок();
Приложение.Опция("krb").ТМассивСтрок();
Приложение.Опция("libcurl").ТМассивСтрок();
Приложение.Опция("limit-rate").ТМассивСтрок();
Приложение.Опция("l list-only").ТМассивСтрок();
Приложение.Опция("local-port").ТМассивСтрок();
Приложение.Опция("L location").ТМассивСтрок();
Приложение.Опция("location-trusted").ТМассивСтрок();
Приложение.Опция("login-options").ТМассивСтрок();
Приложение.Опция("mail-auth").ТМассивСтрок();
Приложение.Опция("mail-from").ТМассивСтрок();
Приложение.Опция("mail-rcpt").ТМассивСтрок();
Приложение.Опция("mail-rcpt-allowfails").ТМассивСтрок();
Приложение.Опция("M manual").ТМассивСтрок();
Приложение.Опция("max-filesize").ТМассивСтрок();
Приложение.Опция("max-redirs").ТМассивСтрок();
Приложение.Опция("metalink").ТМассивСтрок();
Приложение.Опция("mptcp").ТМассивСтрок();
Приложение.Опция("negotiate").ТМассивСтрок();
Приложение.Опция("n netrc").ТМассивСтрок();
Приложение.Опция("netrc-file").ТМассивСтрок();
Приложение.Опция("netrc-optional").ТМассивСтрок();
Приложение.Опция("no-alpn").ТМассивСтрок();
Приложение.Опция("N no-buffer").ТМассивСтрок();
Приложение.Опция("no-clobber").ТМассивСтрок();
Приложение.Опция("no-keepalive").ТМассивСтрок();
Приложение.Опция("no-npn").ТМассивСтрок();
Приложение.Опция("no-progress-meter").ТМассивСтрок();
Приложение.Опция("no-sessionid").ТМассивСтрок();
Приложение.Опция("noproxy").ТМассивСтрок();
Приложение.Опция("ntlm").ТМассивСтрок();
Приложение.Опция("ntlm-wb").ТМассивСтрок();
Приложение.Опция("oauth2-bearer").ТМассивСтрок();
Приложение.Опция("Z parallel").ТМассивСтрок();
Приложение.Опция("parallel-immediate").ТМассивСтрок();
Приложение.Опция("parallel-max").ТМассивСтрок();
Приложение.Опция("pass").ТМассивСтрок();
Приложение.Опция("path-as-is").ТМассивСтрок();
Приложение.Опция("pinnedpubkey").ТМассивСтрок();
Приложение.Опция("post301").ТМассивСтрок();
Приложение.Опция("post302").ТМассивСтрок();
Приложение.Опция("post303").ТМассивСтрок();
Приложение.Опция("preproxy").ТМассивСтрок();
Приложение.Опция("proto").ТМассивСтрок();
Приложение.Опция("proto-default").ТМассивСтрок();
Приложение.Опция("proto-redir").ТМассивСтрок();
Приложение.Опция("proxy-anyauth").ТМассивСтрок();
Приложение.Опция("proxy-ca-native").ТМассивСтрок();
Приложение.Опция("proxy-cacert").ТМассивСтрок();
Приложение.Опция("proxy-capath").ТМассивСтрок();
Приложение.Опция("proxy-cert").ТМассивСтрок();
Приложение.Опция("proxy-cert-type").ТМассивСтрок();
Приложение.Опция("proxy-ciphers").ТМассивСтрок();
Приложение.Опция("proxy-crlfile").ТМассивСтрок();
Приложение.Опция("proxy-digest").ТМассивСтрок();
Приложение.Опция("proxy-header").ТМассивСтрок();
Приложение.Опция("proxy-http2").ТМассивСтрок();
Приложение.Опция("proxy-insecure").ТМассивСтрок();
Приложение.Опция("proxy-key").ТМассивСтрок();
Приложение.Опция("proxy-key-type").ТМассивСтрок();
Приложение.Опция("proxy-negotiate").ТМассивСтрок();
Приложение.Опция("proxy-pass").ТМассивСтрок();
Приложение.Опция("proxy-pinnedpubkey").ТМассивСтрок();
Приложение.Опция("proxy-service-name").ТМассивСтрок();
Приложение.Опция("proxy-ssl-allow-beast").ТМассивСтрок();
Приложение.Опция("proxy-ssl-auto-client-cert").ТМассивСтрок();
Приложение.Опция("proxy-tls13-ciphers").ТМассивСтрок();
Приложение.Опция("proxy-tlsauthtype").ТМассивСтрок();
Приложение.Опция("proxy-tlspassword").ТМассивСтрок();
Приложение.Опция("proxy-tlsuser").ТМассивСтрок();
Приложение.Опция("proxy-tlsv1").ТМассивСтрок();
Приложение.Опция("proxy1").ТМассивСтрок();
Приложение.Опция("p proxytunnel").ТМассивСтрок();
Приложение.Опция("pubkey").ТМассивСтрок();
Приложение.Опция("Q quote").ТМассивСтрок();
Приложение.Опция("random-file").ТМассивСтрок();
Приложение.Опция("r range").ТМассивСтрок();
Приложение.Опция("rate").ТМассивСтрок();
Приложение.Опция("raw").ТМассивСтрок();
Приложение.Опция("e referer").ТМассивСтрок();
Приложение.Опция("J remote-header-name").ТМассивСтрок();
Приложение.Опция("R remote-time").ТМассивСтрок();
Приложение.Опция("remove-on-error").ТМассивСтрок();
Приложение.Опция("request-target").ТМассивСтрок();
Приложение.Опция("resolve").ТМассивСтрок();
Приложение.Опция("retry").ТМассивСтрок();
Приложение.Опция("retry-all-errors").ТМассивСтрок();
Приложение.Опция("retry-connrefused").ТМассивСтрок();
Приложение.Опция("retry-delay").ТМассивСтрок();
Приложение.Опция("retry-max-time").ТМассивСтрок();
Приложение.Опция("sasl-authzid").ТМассивСтрок();
Приложение.Опция("sasl-ir").ТМассивСтрок();
Приложение.Опция("service-name").ТМассивСтрок();
Приложение.Опция("S show-error").ТМассивСтрок();
Приложение.Опция("i show-headers").ТМассивСтрок();
Приложение.Опция("s silent").ТМассивСтрок();
Приложение.Опция("skip-existing").ТМассивСтрок();
Приложение.Опция("socks4").ТМассивСтрок();
Приложение.Опция("socks4a").ТМассивСтрок();
Приложение.Опция("socks5").ТМассивСтрок();
Приложение.Опция("socks5-basic").ТМассивСтрок();
Приложение.Опция("socks5-gssapi").ТМассивСтрок();
Приложение.Опция("socks5-gssapi-nec").ТМассивСтрок();
Приложение.Опция("socks5-gssapi-service").ТМассивСтрок();
Приложение.Опция("socks5-hostname").ТМассивСтрок();
Приложение.Опция("Y speed-limit").ТМассивСтрок();
Приложение.Опция("y speed-time").ТМассивСтрок();
Приложение.Опция("ssl").ТМассивСтрок();
Приложение.Опция("ssl-allow-beast").ТМассивСтрок();
Приложение.Опция("ssl-auto-client-cert").ТМассивСтрок();
Приложение.Опция("ssl-no-revoke").ТМассивСтрок();
Приложение.Опция("ssl-reqd").ТМассивСтрок();
Приложение.Опция("ssl-revoke-best-effort").ТМассивСтрок();
Приложение.Опция("stderr").ТМассивСтрок();
Приложение.Опция("styled-output").ТМассивСтрок();
Приложение.Опция("suppress-connect-headers").ТМассивСтрок();
Приложение.Опция("tcp-fastopen").ТМассивСтрок();
Приложение.Опция("tcp-nodelay").ТМассивСтрок();
Приложение.Опция("t telnet-option").ТМассивСтрок();
Приложение.Опция("tftp-blksize").ТМассивСтрок();
Приложение.Опция("tftp-no-options").ТМассивСтрок();
Приложение.Опция("z time-cond").ТМассивСтрок();
Приложение.Опция("tls-earlydata").ТМассивСтрок();
Приложение.Опция("tls-max").ТМассивСтрок();
Приложение.Опция("tls13-ciphers").ТМассивСтрок();
Приложение.Опция("tlsauthtype").ТМассивСтрок();
Приложение.Опция("tlspassword").ТМассивСтрок();
Приложение.Опция("tlsuser").ТМассивСтрок();
Приложение.Опция("tlsv1").ТМассивСтрок();
Приложение.Опция("tlsv1").ТМассивСтрок();
Приложение.Опция("tlsv1").ТМассивСтрок();
Приложение.Опция("tlsv1").ТМассивСтрок();
Приложение.Опция("tr-encoding").ТМассивСтрок();
Приложение.Опция("trace").ТМассивСтрок();
Приложение.Опция("trace-ascii").ТМассивСтрок();
Приложение.Опция("trace-config").ТМассивСтрок();
Приложение.Опция("trace-ids").ТМассивСтрок();
Приложение.Опция("trace-time").ТМассивСтрок();
Приложение.Опция("unix-socket").ТМассивСтрок();
Приложение.Опция("B use-ascii").ТМассивСтрок();
Приложение.Опция("variable").ТМассивСтрок();
Приложение.Опция("v verbose").ТМассивСтрок();
Приложение.Опция("V version").ТМассивСтрок();
Приложение.Опция("vlan-priority").ТМассивСтрок();
Приложение.Опция("w write-out").ТМассивСтрок();
Приложение.Опция("xattr").ТМассивСтрок();
КонецЕсли;
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
Возврат Приложение;

View File

@@ -0,0 +1,61 @@
#Использовать "../src"
Функция ПолучитьВсеОпции()
Соединение = Новый HTTPСоединение("curl.se");
Запрос = Новый HTTPЗапрос("docs/manpage.html");
Ответ = Соединение.Получить(Запрос);
ПрверяемаяСтрока = Ответ.ПолучитьТелоКакСтроку();
РегулярноеВыражение = Новый РегулярноеВыражение("<a name=""(-+[a-zA-Z]+[a-zA-Z0-9-]*)""></a><span class=""nroffip"">([a-zA-Z0-9-,\s]*)(.*)</span>");
Совпадения = РегулярноеВыражение.НайтиСовпадения(ПрверяемаяСтрока);
МассивОпций = Новый Массив();
Для Каждого Совпадение Из Совпадения Цикл
Опции = СокрЛП(СтрЗаменить(Совпадение.Группы[2].Значение, ",", ""));
МассивОпций.Добавить(Опции);
КонецЦикла;
Возврат МассивОпций;
КонецФункции
Функция ПодготовитьКодИнициализацииНеподдерживаемыхОпций()
Опции = ПолучитьВсеОпции();
Результат = Новый ТекстовыйДокумент();
КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
ПоддерживаемыеОпции = КонвертерКомандыCURL.ПоддерживаемыеОпции();
ПоддерживаемыеОпцииСоответствие = Новый Соответствие();
Для Каждого Опция Из ПоддерживаемыеОпции Цикл
ПоддерживаемыеОпцииСоответствие.Вставить(Опция, Истина);
КонецЦикла;
Для Каждого ОпцииСтрока Из Опции Цикл
ОпцииБезОбработки = СтрРазделить(ОпцииСтрока, " ");
Если ПоддерживаемыеОпцииСоответствие.Получить(ОпцииБезОбработки[0]) = Неопределено Тогда
ОпцииОбработанные = Новый Массив();
Для Каждого Опция Из ОпцииБезОбработки Цикл
ПозицияНаименования = ?(Лев(Опция, 2) = "--", 3, 2);
Опция = Сред(Опция, ПозицияНаименования);
ОпцииОбработанные.Добавить(Опция);
КонецЦикла;
Результат.ДобавитьСтроку("Приложение.Опция(""" + СтрСоединить(ОпцииОбработанные, " ") + """).ТМассивСтрок();");
КонецЕсли;
КонецЦикла;
Возврат Результат.ПолучитьТекст();
КонецФункции
ПутьКФайлу = ТекущийКаталог() + ПолучитьРазделительПути() + "unsupported-options.txt";
Результат = Новый ТекстовыйДокумент();
Результат.УстановитьТекст(ПодготовитьКодИнициализацииНеподдерживаемыхОпций());
Результат.Записать(ПутьКФайлу);
Сообщить(ПутьКФайлу);