diff --git a/src/Классы/КонвертерКомандыCURL.os b/src/Классы/КонвертерКомандыCURL.os
index d128573..ea817a8 100644
--- a/src/Классы/КонвертерКомандыCURL.os
+++ b/src/Классы/КонвертерКомандыCURL.os
@@ -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").ТМассивСтрок();
+ КонецЕсли;
+
Приложение.УстановитьОсновноеДействие(ЭтотОбъект);
Возврат Приложение;
diff --git a/tools/ПодготовкаОпцийИзСайтаCurl.os b/tools/ПодготовкаОпцийИзСайтаCurl.os
new file mode 100644
index 0000000..20fdf80
--- /dev/null
+++ b/tools/ПодготовкаОпцийИзСайтаCurl.os
@@ -0,0 +1,61 @@
+#Использовать "../src"
+
+Функция ПолучитьВсеОпции()
+
+ Соединение = Новый HTTPСоединение("curl.se");
+ Запрос = Новый HTTPЗапрос("docs/manpage.html");
+
+ Ответ = Соединение.Получить(Запрос);
+ ПрверяемаяСтрока = Ответ.ПолучитьТелоКакСтроку();
+
+ РегулярноеВыражение = Новый РегулярноеВыражение("([a-zA-Z0-9-,\s]*)(.*)");
+ Совпадения = РегулярноеВыражение.НайтиСовпадения(ПрверяемаяСтрока);
+
+ МассивОпций = Новый Массив();
+ Для Каждого Совпадение Из Совпадения Цикл
+ Опции = СокрЛП(СтрЗаменить(Совпадение.Группы[2].Значение, ",", ""));
+ МассивОпций.Добавить(Опции);
+ КонецЦикла;
+
+ Возврат МассивОпций;
+
+КонецФункции
+
+Функция ПодготовитьКодИнициализацииНеподдерживаемыхОпций()
+
+ Опции = ПолучитьВсеОпции();
+
+ Результат = Новый ТекстовыйДокумент();
+
+ КонвертерКомандыCURL = Новый КонвертерКомандыCURL();
+ ПоддерживаемыеОпции = КонвертерКомандыCURL.ПоддерживаемыеОпции();
+ ПоддерживаемыеОпцииСоответствие = Новый Соответствие();
+
+ Для Каждого Опция Из ПоддерживаемыеОпции Цикл
+ ПоддерживаемыеОпцииСоответствие.Вставить(Опция, Истина);
+ КонецЦикла;
+
+ Для Каждого ОпцииСтрока Из Опции Цикл
+ ОпцииБезОбработки = СтрРазделить(ОпцииСтрока, " ");
+ Если ПоддерживаемыеОпцииСоответствие.Получить(ОпцииБезОбработки[0]) = Неопределено Тогда
+ ОпцииОбработанные = Новый Массив();
+ Для Каждого Опция Из ОпцииБезОбработки Цикл
+ ПозицияНаименования = ?(Лев(Опция, 2) = "--", 3, 2);
+ Опция = Сред(Опция, ПозицияНаименования);
+ ОпцииОбработанные.Добавить(Опция);
+ КонецЦикла;
+ Результат.ДобавитьСтроку("Приложение.Опция(""" + СтрСоединить(ОпцииОбработанные, " ") + """).ТМассивСтрок();");
+ КонецЕсли;
+ КонецЦикла;
+
+ Возврат Результат.ПолучитьТекст();
+
+КонецФункции
+
+ПутьКФайлу = ТекущийКаталог() + ПолучитьРазделительПути() + "unsupported-options.txt";
+
+Результат = Новый ТекстовыйДокумент();
+Результат.УстановитьТекст(ПодготовитьКодИнициализацииНеподдерживаемыхОпций());
+Результат.Записать(ПутьКФайлу);
+
+Сообщить(ПутьКФайлу);
\ No newline at end of file