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