@ohos-ports/curlconverter 4.12.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +153 -0
- package/dist/src/Headers.d.ts +23 -0
- package/dist/src/Headers.js +287 -0
- package/dist/src/Headers.js.map +1 -0
- package/dist/src/Query.d.ts +8 -0
- package/dist/src/Query.js +136 -0
- package/dist/src/Query.js.map +1 -0
- package/dist/src/Request.d.ts +200 -0
- package/dist/src/Request.js +1191 -0
- package/dist/src/Request.js.map +1 -0
- package/dist/src/Warnings.d.ts +15 -0
- package/dist/src/Warnings.js +111 -0
- package/dist/src/Warnings.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +333 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/curl/auth.d.ts +12 -0
- package/dist/src/curl/auth.js +40 -0
- package/dist/src/curl/auth.js.map +1 -0
- package/dist/src/curl/form.d.ts +28 -0
- package/dist/src/curl/form.js +218 -0
- package/dist/src/curl/form.js.map +1 -0
- package/dist/src/curl/opts.d.ts +2052 -0
- package/dist/src/curl/opts.js +1000 -0
- package/dist/src/curl/opts.js.map +1 -0
- package/dist/src/curl/url.d.ts +14 -0
- package/dist/src/curl/url.js +218 -0
- package/dist/src/curl/url.js.map +1 -0
- package/dist/src/generators/ansible.d.ts +5 -0
- package/dist/src/generators/ansible.js +282 -0
- package/dist/src/generators/ansible.js.map +1 -0
- package/dist/src/generators/c.d.ts +12 -0
- package/dist/src/generators/c.js +1230 -0
- package/dist/src/generators/c.js.map +1 -0
- package/dist/src/generators/cfml.d.ts +5 -0
- package/dist/src/generators/cfml.js +134 -0
- package/dist/src/generators/cfml.js.map +1 -0
- package/dist/src/generators/clojure.d.ts +7 -0
- package/dist/src/generators/clojure.js +436 -0
- package/dist/src/generators/clojure.js.map +1 -0
- package/dist/src/generators/csharp.d.ts +8 -0
- package/dist/src/generators/csharp.js +356 -0
- package/dist/src/generators/csharp.js.map +1 -0
- package/dist/src/generators/dart.d.ts +5 -0
- package/dist/src/generators/dart.js +273 -0
- package/dist/src/generators/dart.js.map +1 -0
- package/dist/src/generators/elixir.d.ts +8 -0
- package/dist/src/generators/elixir.js +296 -0
- package/dist/src/generators/elixir.js.map +1 -0
- package/dist/src/generators/go.d.ts +5 -0
- package/dist/src/generators/go.js +228 -0
- package/dist/src/generators/go.js.map +1 -0
- package/dist/src/generators/har.d.ts +7 -0
- package/dist/src/generators/har.js +115 -0
- package/dist/src/generators/har.js.map +1 -0
- package/dist/src/generators/http.d.ts +7 -0
- package/dist/src/generators/http.js +165 -0
- package/dist/src/generators/http.js.map +1 -0
- package/dist/src/generators/httpie.d.ts +5 -0
- package/dist/src/generators/httpie.js +446 -0
- package/dist/src/generators/httpie.js.map +1 -0
- package/dist/src/generators/java/httpurlconnection.d.ts +5 -0
- package/dist/src/generators/java/httpurlconnection.js +123 -0
- package/dist/src/generators/java/httpurlconnection.js.map +1 -0
- package/dist/src/generators/java/java.d.ts +8 -0
- package/dist/src/generators/java/java.js +247 -0
- package/dist/src/generators/java/java.js.map +1 -0
- package/dist/src/generators/java/jsoup.d.ts +5 -0
- package/dist/src/generators/java/jsoup.js +152 -0
- package/dist/src/generators/java/jsoup.js.map +1 -0
- package/dist/src/generators/java/okhttp.d.ts +5 -0
- package/dist/src/generators/java/okhttp.js +232 -0
- package/dist/src/generators/java/okhttp.js.map +1 -0
- package/dist/src/generators/javascript/axios.d.ts +5 -0
- package/dist/src/generators/javascript/axios.js +332 -0
- package/dist/src/generators/javascript/axios.js.map +1 -0
- package/dist/src/generators/javascript/got.d.ts +5 -0
- package/dist/src/generators/javascript/got.js +277 -0
- package/dist/src/generators/javascript/got.js.map +1 -0
- package/dist/src/generators/javascript/http.d.ts +8 -0
- package/dist/src/generators/javascript/http.js +183 -0
- package/dist/src/generators/javascript/http.js.map +1 -0
- package/dist/src/generators/javascript/javascript.d.ts +37 -0
- package/dist/src/generators/javascript/javascript.js +676 -0
- package/dist/src/generators/javascript/javascript.js.map +1 -0
- package/dist/src/generators/javascript/jquery.d.ts +15 -0
- package/dist/src/generators/javascript/jquery.js +297 -0
- package/dist/src/generators/javascript/jquery.js.map +1 -0
- package/dist/src/generators/javascript/ky.d.ts +7 -0
- package/dist/src/generators/javascript/ky.js +245 -0
- package/dist/src/generators/javascript/ky.js.map +1 -0
- package/dist/src/generators/javascript/request.d.ts +5 -0
- package/dist/src/generators/javascript/request.js +113 -0
- package/dist/src/generators/javascript/request.js.map +1 -0
- package/dist/src/generators/javascript/superagent.d.ts +10 -0
- package/dist/src/generators/javascript/superagent.js +301 -0
- package/dist/src/generators/javascript/superagent.js.map +1 -0
- package/dist/src/generators/javascript/xhr.d.ts +8 -0
- package/dist/src/generators/javascript/xhr.js +147 -0
- package/dist/src/generators/javascript/xhr.js.map +1 -0
- package/dist/src/generators/json.d.ts +45 -0
- package/dist/src/generators/json.js +197 -0
- package/dist/src/generators/json.js.map +1 -0
- package/dist/src/generators/julia.d.ts +8 -0
- package/dist/src/generators/julia.js +365 -0
- package/dist/src/generators/julia.js.map +1 -0
- package/dist/src/generators/kotlin.d.ts +8 -0
- package/dist/src/generators/kotlin.js +325 -0
- package/dist/src/generators/kotlin.js.map +1 -0
- package/dist/src/generators/lua.d.ts +5 -0
- package/dist/src/generators/lua.js +192 -0
- package/dist/src/generators/lua.js.map +1 -0
- package/dist/src/generators/matlab/common.d.ts +16 -0
- package/dist/src/generators/matlab/common.js +238 -0
- package/dist/src/generators/matlab/common.js.map +1 -0
- package/dist/src/generators/matlab/httpinterface.d.ts +2 -0
- package/dist/src/generators/matlab/httpinterface.js +211 -0
- package/dist/src/generators/matlab/httpinterface.js.map +1 -0
- package/dist/src/generators/matlab/matlab.d.ts +5 -0
- package/dist/src/generators/matlab/matlab.js +29 -0
- package/dist/src/generators/matlab/matlab.js.map +1 -0
- package/dist/src/generators/matlab/webservices.d.ts +2 -0
- package/dist/src/generators/matlab/webservices.js +191 -0
- package/dist/src/generators/matlab/webservices.js.map +1 -0
- package/dist/src/generators/objectivec.d.ts +8 -0
- package/dist/src/generators/objectivec.js +269 -0
- package/dist/src/generators/objectivec.js.map +1 -0
- package/dist/src/generators/ocaml.d.ts +8 -0
- package/dist/src/generators/ocaml.js +150 -0
- package/dist/src/generators/ocaml.js.map +1 -0
- package/dist/src/generators/perl.d.ts +9 -0
- package/dist/src/generators/perl.js +209 -0
- package/dist/src/generators/perl.js.map +1 -0
- package/dist/src/generators/php/guzzle.d.ts +5 -0
- package/dist/src/generators/php/guzzle.js +328 -0
- package/dist/src/generators/php/guzzle.js.map +1 -0
- package/dist/src/generators/php/php.d.ts +8 -0
- package/dist/src/generators/php/php.js +217 -0
- package/dist/src/generators/php/php.js.map +1 -0
- package/dist/src/generators/php/requests.d.ts +5 -0
- package/dist/src/generators/php/requests.js +89 -0
- package/dist/src/generators/php/requests.js.map +1 -0
- package/dist/src/generators/powershell.d.ts +11 -0
- package/dist/src/generators/powershell.js +377 -0
- package/dist/src/generators/powershell.js.map +1 -0
- package/dist/src/generators/python/http.d.ts +5 -0
- package/dist/src/generators/python/http.js +128 -0
- package/dist/src/generators/python/http.js.map +1 -0
- package/dist/src/generators/python/python.d.ts +22 -0
- package/dist/src/generators/python/python.js +1693 -0
- package/dist/src/generators/python/python.js.map +1 -0
- package/dist/src/generators/r/httr.d.ts +10 -0
- package/dist/src/generators/r/httr.js +298 -0
- package/dist/src/generators/r/httr.js.map +1 -0
- package/dist/src/generators/r/httr2.d.ts +5 -0
- package/dist/src/generators/r/httr2.js +214 -0
- package/dist/src/generators/r/httr2.js.map +1 -0
- package/dist/src/generators/ruby/httparty.d.ts +6 -0
- package/dist/src/generators/ruby/httparty.js +308 -0
- package/dist/src/generators/ruby/httparty.js.map +1 -0
- package/dist/src/generators/ruby/ruby.d.ts +14 -0
- package/dist/src/generators/ruby/ruby.js +515 -0
- package/dist/src/generators/ruby/ruby.js.map +1 -0
- package/dist/src/generators/rust.d.ts +8 -0
- package/dist/src/generators/rust.js +177 -0
- package/dist/src/generators/rust.js.map +1 -0
- package/dist/src/generators/swift.d.ts +8 -0
- package/dist/src/generators/swift.js +219 -0
- package/dist/src/generators/swift.js.map +1 -0
- package/dist/src/generators/wget.d.ts +8 -0
- package/dist/src/generators/wget.js +472 -0
- package/dist/src/generators/wget.js.map +1 -0
- package/dist/src/index.d.ts +53 -0
- package/dist/src/index.js +54 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/parse.d.ts +13 -0
- package/dist/src/parse.js +43 -0
- package/dist/src/parse.js.map +1 -0
- package/dist/src/shell/Parser.d.ts +4 -0
- package/dist/src/shell/Parser.js +6 -0
- package/dist/src/shell/Parser.js.map +1 -0
- package/dist/src/shell/Word.d.ts +48 -0
- package/dist/src/shell/Word.js +486 -0
- package/dist/src/shell/Word.js.map +1 -0
- package/dist/src/shell/tokenizer.d.ts +3 -0
- package/dist/src/shell/tokenizer.js +610 -0
- package/dist/src/shell/tokenizer.js.map +1 -0
- package/dist/src/shell/webParser.d.ts +4 -0
- package/dist/src/shell/webParser.js +15 -0
- package/dist/src/shell/webParser.js.map +1 -0
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.js +21 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tools/compare-requests.d.ts +2 -0
- package/dist/tools/compare-requests.js +448 -0
- package/dist/tools/compare-requests.js.map +1 -0
- package/dist/tools/gen-test.d.ts +2 -0
- package/dist/tools/gen-test.js +114 -0
- package/dist/tools/gen-test.js.map +1 -0
- package/dist/tree-sitter-bash.wasm +0 -0
- package/index.d.ts +3 -0
- package/package.json +97 -0
- package/src/Headers.ts +334 -0
- package/src/Query.ts +147 -0
- package/src/Request.ts +1649 -0
- package/src/Warnings.ts +154 -0
- package/src/cli.ts +561 -0
- package/src/curl/auth.ts +45 -0
- package/src/curl/form.ts +297 -0
- package/src/curl/opts.ts +1417 -0
- package/src/curl/url.ts +241 -0
- package/src/generators/ansible.ts +364 -0
- package/src/generators/c.ts +1371 -0
- package/src/generators/cfml.ts +155 -0
- package/src/generators/clojure.ts +521 -0
- package/src/generators/csharp.ts +383 -0
- package/src/generators/dart.ts +293 -0
- package/src/generators/elixir.ts +349 -0
- package/src/generators/go.ts +269 -0
- package/src/generators/har.ts +147 -0
- package/src/generators/http.ts +194 -0
- package/src/generators/httpie.ts +506 -0
- package/src/generators/java/httpurlconnection.ts +151 -0
- package/src/generators/java/java.ts +280 -0
- package/src/generators/java/jsoup.ts +172 -0
- package/src/generators/java/okhttp.ts +257 -0
- package/src/generators/javascript/axios.ts +395 -0
- package/src/generators/javascript/got.ts +362 -0
- package/src/generators/javascript/http.ts +232 -0
- package/src/generators/javascript/javascript.ts +825 -0
- package/src/generators/javascript/jquery.ts +360 -0
- package/src/generators/javascript/ky.ts +315 -0
- package/src/generators/javascript/request.ts +152 -0
- package/src/generators/javascript/superagent.ts +373 -0
- package/src/generators/javascript/xhr.ts +192 -0
- package/src/generators/json.ts +293 -0
- package/src/generators/julia.ts +398 -0
- package/src/generators/kotlin.ts +355 -0
- package/src/generators/lua.ts +209 -0
- package/src/generators/matlab/common.ts +281 -0
- package/src/generators/matlab/httpinterface.ts +284 -0
- package/src/generators/matlab/matlab.ts +39 -0
- package/src/generators/matlab/webservices.ts +263 -0
- package/src/generators/objectivec.ts +297 -0
- package/src/generators/ocaml.ts +168 -0
- package/src/generators/perl.ts +237 -0
- package/src/generators/php/guzzle.ts +368 -0
- package/src/generators/php/php.ts +239 -0
- package/src/generators/php/requests.ts +103 -0
- package/src/generators/powershell.ts +430 -0
- package/src/generators/python/http.ts +167 -0
- package/src/generators/python/python.ts +1934 -0
- package/src/generators/r/httr.ts +328 -0
- package/src/generators/r/httr2.ts +268 -0
- package/src/generators/ruby/httparty.ts +351 -0
- package/src/generators/ruby/ruby.ts +564 -0
- package/src/generators/rust.ts +243 -0
- package/src/generators/swift.ts +235 -0
- package/src/generators/wget.ts +533 -0
- package/src/index.ts +89 -0
- package/src/parse.ts +72 -0
- package/src/shell/Parser.ts +8 -0
- package/src/shell/Word.ts +531 -0
- package/src/shell/tokenizer.ts +736 -0
- package/src/shell/webParser.ts +18 -0
- package/src/utils.ts +25 -0
- package/tools/compare-requests.ts +571 -0
- package/tools/extract_curl_args.py +511 -0
- package/tools/gen-test.ts +129 -0
package/src/Warnings.ts
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import type { Parser } from "./shell/Parser.js";
|
|
2
|
+
import type { GlobalConfig } from "./curl/opts.js";
|
|
3
|
+
import type { Request } from "./Request.js";
|
|
4
|
+
|
|
5
|
+
export type Warnings = [string, string][];
|
|
6
|
+
|
|
7
|
+
export function warnf(global_: GlobalConfig, warning: [string, string]) {
|
|
8
|
+
global_.warnings.push(warning);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
function underline(
|
|
12
|
+
node: Parser.SyntaxNode | Parser.TreeCursor,
|
|
13
|
+
startIndex: number,
|
|
14
|
+
endIndex: number,
|
|
15
|
+
curlCommand: string,
|
|
16
|
+
): string {
|
|
17
|
+
if (startIndex === endIndex) {
|
|
18
|
+
endIndex++;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// TODO: \r ?
|
|
22
|
+
let lineStart = startIndex;
|
|
23
|
+
if (startIndex > 0) {
|
|
24
|
+
// If it's -1 we're on the first line
|
|
25
|
+
lineStart = curlCommand.lastIndexOf("\n", startIndex - 1) + 1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
let underlineLength = endIndex - startIndex;
|
|
29
|
+
let lineEnd = curlCommand.indexOf("\n", startIndex);
|
|
30
|
+
if (lineEnd === -1) {
|
|
31
|
+
lineEnd = curlCommand.length;
|
|
32
|
+
} else if (lineEnd < endIndex) {
|
|
33
|
+
// Add extra "^" past the end of a line to signal that the node continues
|
|
34
|
+
underlineLength = lineEnd - startIndex + 1;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const line = curlCommand.slice(lineStart, lineEnd);
|
|
38
|
+
const underline =
|
|
39
|
+
" ".repeat(startIndex - lineStart) + "^".repeat(underlineLength);
|
|
40
|
+
return line + "\n" + underline;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function underlineCursor(
|
|
44
|
+
node: Parser.TreeCursor,
|
|
45
|
+
curlCommand: string,
|
|
46
|
+
): string {
|
|
47
|
+
return underline(node, node.startIndex, node.endIndex, curlCommand);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function underlineNode(
|
|
51
|
+
node: Parser.SyntaxNode,
|
|
52
|
+
curlCommand?: string,
|
|
53
|
+
): string {
|
|
54
|
+
// doesn't include leading whitespace
|
|
55
|
+
const command = node.tree.rootNode;
|
|
56
|
+
let startIndex = node.startIndex;
|
|
57
|
+
let endIndex = node.endIndex;
|
|
58
|
+
if (!curlCommand) {
|
|
59
|
+
curlCommand = command.text;
|
|
60
|
+
startIndex -= command.startIndex;
|
|
61
|
+
endIndex -= command.startIndex;
|
|
62
|
+
}
|
|
63
|
+
return underline(node, startIndex, endIndex, curlCommand);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export function underlineNodeEnd(
|
|
67
|
+
node: Parser.SyntaxNode,
|
|
68
|
+
curlCommand?: string,
|
|
69
|
+
): string {
|
|
70
|
+
// doesn't include leading whitespace
|
|
71
|
+
const command = node.tree.rootNode;
|
|
72
|
+
let startIndex = node.startIndex;
|
|
73
|
+
let endIndex = node.endIndex;
|
|
74
|
+
if (!curlCommand) {
|
|
75
|
+
curlCommand = command.text;
|
|
76
|
+
startIndex -= command.startIndex;
|
|
77
|
+
endIndex -= command.startIndex;
|
|
78
|
+
}
|
|
79
|
+
if (startIndex === endIndex) {
|
|
80
|
+
endIndex++;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// TODO: \r ?
|
|
84
|
+
let lineStart = startIndex;
|
|
85
|
+
if (startIndex > 0) {
|
|
86
|
+
// If it's -1 we're on the first line
|
|
87
|
+
lineStart = curlCommand.lastIndexOf("\n", endIndex - 1) + 1;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const underlineStart = Math.max(startIndex, lineStart);
|
|
91
|
+
const underlineLength = endIndex - underlineStart;
|
|
92
|
+
let lineEnd = curlCommand.indexOf("\n", endIndex);
|
|
93
|
+
if (lineEnd === -1) {
|
|
94
|
+
lineEnd = curlCommand.length;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const line = curlCommand.slice(lineStart, lineEnd);
|
|
98
|
+
const underline =
|
|
99
|
+
" ".repeat(underlineStart - lineStart) + "^".repeat(underlineLength);
|
|
100
|
+
return line + "\n" + underline;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface Support {
|
|
104
|
+
// multipleRequests?: boolean; // Why call this function?
|
|
105
|
+
multipleUrls?: boolean;
|
|
106
|
+
dataReadsFile?: boolean;
|
|
107
|
+
queryReadsFile?: boolean;
|
|
108
|
+
cookieFiles?: boolean;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function warnIfPartsIgnored(
|
|
112
|
+
request: Request,
|
|
113
|
+
warnings: Warnings,
|
|
114
|
+
support?: Support,
|
|
115
|
+
) {
|
|
116
|
+
if (request.urls.length > 1 && !support?.multipleUrls) {
|
|
117
|
+
warnings.push([
|
|
118
|
+
"multiple-urls",
|
|
119
|
+
"found " +
|
|
120
|
+
request.urls.length +
|
|
121
|
+
" URLs, only the first one will be used: " +
|
|
122
|
+
request.urls
|
|
123
|
+
.map((u) => JSON.stringify(u.originalUrl.toString()))
|
|
124
|
+
.join(", "),
|
|
125
|
+
]);
|
|
126
|
+
}
|
|
127
|
+
if (request.dataReadsFile && !support?.dataReadsFile) {
|
|
128
|
+
warnings.push([
|
|
129
|
+
"unsafe-data",
|
|
130
|
+
// TODO: better wording. Could be "body:" too
|
|
131
|
+
"the generated data content is wrong, " +
|
|
132
|
+
// TODO: might not come from "@"
|
|
133
|
+
JSON.stringify("@" + request.dataReadsFile) +
|
|
134
|
+
" means read the file " +
|
|
135
|
+
JSON.stringify(request.dataReadsFile),
|
|
136
|
+
]);
|
|
137
|
+
}
|
|
138
|
+
if (request.urls[0].queryReadsFile && !support?.queryReadsFile) {
|
|
139
|
+
warnings.push([
|
|
140
|
+
"unsafe-query",
|
|
141
|
+
"the generated URL query string is wrong, " +
|
|
142
|
+
JSON.stringify("@" + request.urls[0].queryReadsFile) +
|
|
143
|
+
" means read the file " +
|
|
144
|
+
JSON.stringify(request.urls[0].queryReadsFile),
|
|
145
|
+
]);
|
|
146
|
+
}
|
|
147
|
+
if (request.cookieFiles && !support?.cookieFiles) {
|
|
148
|
+
warnings.push([
|
|
149
|
+
"cookie-files",
|
|
150
|
+
"passing a file for --cookie/-b is not supported: " +
|
|
151
|
+
request.cookieFiles.map((c) => JSON.stringify(c.toString())).join(", "),
|
|
152
|
+
]);
|
|
153
|
+
}
|
|
154
|
+
}
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { CCError, has } from "./utils.js";
|
|
4
|
+
import type { Warnings } from "./Warnings.js";
|
|
5
|
+
import { Word } from "./shell/Word.js";
|
|
6
|
+
import {
|
|
7
|
+
parseArgs,
|
|
8
|
+
curlLongOpts,
|
|
9
|
+
curlLongOptsShortened,
|
|
10
|
+
curlShortOpts,
|
|
11
|
+
} from "./curl/opts.js";
|
|
12
|
+
import type { LongOpts, ShortOpts } from "./curl/opts.js";
|
|
13
|
+
|
|
14
|
+
import { buildRequests } from "./Request.js";
|
|
15
|
+
import type { Request } from "./Request.js";
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
_toAnsible,
|
|
19
|
+
toAnsibleWarn,
|
|
20
|
+
supportedArgs as supportedArgsAnsible,
|
|
21
|
+
} from "./generators/ansible.js";
|
|
22
|
+
import {
|
|
23
|
+
_toC,
|
|
24
|
+
toCWarn,
|
|
25
|
+
supportedArgs as supportedArgsC,
|
|
26
|
+
} from "./generators/c.js";
|
|
27
|
+
import {
|
|
28
|
+
_toCFML,
|
|
29
|
+
toCFMLWarn,
|
|
30
|
+
supportedArgs as supportedArgsCFML,
|
|
31
|
+
} from "./generators/cfml.js";
|
|
32
|
+
import {
|
|
33
|
+
_toClojure,
|
|
34
|
+
toClojureWarn,
|
|
35
|
+
supportedArgs as supportedArgsClojure,
|
|
36
|
+
} from "./generators/clojure.js";
|
|
37
|
+
import {
|
|
38
|
+
_toCSharp,
|
|
39
|
+
toCSharpWarn,
|
|
40
|
+
supportedArgs as supportedArgsCSharp,
|
|
41
|
+
} from "./generators/csharp.js";
|
|
42
|
+
import {
|
|
43
|
+
_toDart,
|
|
44
|
+
toDartWarn,
|
|
45
|
+
supportedArgs as supportedArgsDart,
|
|
46
|
+
} from "./generators/dart.js";
|
|
47
|
+
import {
|
|
48
|
+
_toElixir,
|
|
49
|
+
toElixirWarn,
|
|
50
|
+
supportedArgs as supportedArgsElixir,
|
|
51
|
+
} from "./generators/elixir.js";
|
|
52
|
+
import {
|
|
53
|
+
_toGo,
|
|
54
|
+
toGoWarn,
|
|
55
|
+
supportedArgs as supportedArgsGo,
|
|
56
|
+
} from "./generators/go.js";
|
|
57
|
+
import {
|
|
58
|
+
_toHarString,
|
|
59
|
+
toHarStringWarn,
|
|
60
|
+
supportedArgs as supportedArgsHarString,
|
|
61
|
+
} from "./generators/har.js";
|
|
62
|
+
import {
|
|
63
|
+
_toHTTP,
|
|
64
|
+
toHTTPWarn,
|
|
65
|
+
supportedArgs as supportedArgsHTTP,
|
|
66
|
+
} from "./generators/http.js";
|
|
67
|
+
import {
|
|
68
|
+
_toHttpie,
|
|
69
|
+
toHttpieWarn,
|
|
70
|
+
supportedArgs as supportedArgsHttpie,
|
|
71
|
+
} from "./generators/httpie.js";
|
|
72
|
+
import {
|
|
73
|
+
_toJava,
|
|
74
|
+
toJavaWarn,
|
|
75
|
+
supportedArgs as supportedArgsJava,
|
|
76
|
+
} from "./generators/java/java.js";
|
|
77
|
+
import {
|
|
78
|
+
_toJavaHttpUrlConnection,
|
|
79
|
+
toJavaHttpUrlConnectionWarn,
|
|
80
|
+
supportedArgs as supportedArgsJavaHttpUrlConnection,
|
|
81
|
+
} from "./generators/java/httpurlconnection.js";
|
|
82
|
+
import {
|
|
83
|
+
_toJavaJsoup,
|
|
84
|
+
toJavaJsoupWarn,
|
|
85
|
+
supportedArgs as supportedArgsJavaJsoup,
|
|
86
|
+
} from "./generators/java/jsoup.js";
|
|
87
|
+
import {
|
|
88
|
+
_toJavaOkHttp,
|
|
89
|
+
toJavaOkHttpWarn,
|
|
90
|
+
supportedArgs as supportedArgsJavaOkHttp,
|
|
91
|
+
} from "./generators/java/okhttp.js";
|
|
92
|
+
import {
|
|
93
|
+
_toJavaScript,
|
|
94
|
+
toJavaScriptWarn,
|
|
95
|
+
javaScriptSupportedArgs as supportedArgsJavaScript,
|
|
96
|
+
} from "./generators/javascript/javascript.js";
|
|
97
|
+
import {
|
|
98
|
+
_toJavaScriptJquery,
|
|
99
|
+
toJavaScriptJqueryWarn,
|
|
100
|
+
supportedArgs as supportedArgsJavaScriptJquery,
|
|
101
|
+
} from "./generators/javascript/jquery.js";
|
|
102
|
+
import {
|
|
103
|
+
_toJavaScriptXHR,
|
|
104
|
+
toJavaScriptXHRWarn,
|
|
105
|
+
supportedArgs as supportedArgsJavaScriptXHR,
|
|
106
|
+
} from "./generators/javascript/xhr.js";
|
|
107
|
+
import {
|
|
108
|
+
_toJsonString,
|
|
109
|
+
toJsonStringWarn,
|
|
110
|
+
supportedArgs as supportedArgsJsonString,
|
|
111
|
+
} from "./generators/json.js";
|
|
112
|
+
import {
|
|
113
|
+
_toJulia,
|
|
114
|
+
toJuliaWarn,
|
|
115
|
+
supportedArgs as supportedArgsJulia,
|
|
116
|
+
} from "./generators/julia.js";
|
|
117
|
+
import {
|
|
118
|
+
_toKotlin,
|
|
119
|
+
toKotlinWarn,
|
|
120
|
+
supportedArgs as supportedArgsKotlin,
|
|
121
|
+
} from "./generators/kotlin.js";
|
|
122
|
+
import {
|
|
123
|
+
_toLua,
|
|
124
|
+
toLuaWarn,
|
|
125
|
+
supportedArgs as supportedArgsLua,
|
|
126
|
+
} from "./generators/lua.js";
|
|
127
|
+
import {
|
|
128
|
+
_toMATLAB,
|
|
129
|
+
toMATLABWarn,
|
|
130
|
+
supportedArgs as supportedArgsMATLAB,
|
|
131
|
+
} from "./generators/matlab/matlab.js";
|
|
132
|
+
import {
|
|
133
|
+
_toNode,
|
|
134
|
+
toNodeWarn,
|
|
135
|
+
nodeSupportedArgs as supportedArgsNode,
|
|
136
|
+
} from "./generators/javascript/javascript.js";
|
|
137
|
+
import {
|
|
138
|
+
_toNodeAxios,
|
|
139
|
+
toNodeAxiosWarn,
|
|
140
|
+
supportedArgs as supportedArgsNodeAxios,
|
|
141
|
+
} from "./generators/javascript/axios.js";
|
|
142
|
+
import {
|
|
143
|
+
_toNodeGot,
|
|
144
|
+
toNodeGotWarn,
|
|
145
|
+
supportedArgs as supportedArgsNodeGot,
|
|
146
|
+
} from "./generators/javascript/got.js";
|
|
147
|
+
import {
|
|
148
|
+
_toNodeHttp,
|
|
149
|
+
toNodeHttpWarn,
|
|
150
|
+
supportedArgs as supportedArgsNodeHttp,
|
|
151
|
+
} from "./generators/javascript/http.js";
|
|
152
|
+
import {
|
|
153
|
+
_toNodeKy,
|
|
154
|
+
toNodeKyWarn,
|
|
155
|
+
supportedArgs as supportedArgsNodeKy,
|
|
156
|
+
} from "./generators/javascript/ky.js";
|
|
157
|
+
import {
|
|
158
|
+
_toNodeRequest,
|
|
159
|
+
toNodeRequestWarn,
|
|
160
|
+
supportedArgs as supportedArgsNodeRequest,
|
|
161
|
+
} from "./generators/javascript/request.js";
|
|
162
|
+
import {
|
|
163
|
+
_toNodeSuperAgent,
|
|
164
|
+
toNodeSuperAgentWarn,
|
|
165
|
+
supportedArgs as supportedArgsNodeSuperAgent,
|
|
166
|
+
} from "./generators/javascript/superagent.js";
|
|
167
|
+
import {
|
|
168
|
+
_toOCaml,
|
|
169
|
+
toOCamlWarn,
|
|
170
|
+
supportedArgs as supportedArgsOCaml,
|
|
171
|
+
} from "./generators/ocaml.js";
|
|
172
|
+
import {
|
|
173
|
+
_toObjectiveC,
|
|
174
|
+
toObjectiveCWarn,
|
|
175
|
+
supportedArgs as supportedArgsObjectiveC,
|
|
176
|
+
} from "./generators/objectivec.js";
|
|
177
|
+
import {
|
|
178
|
+
_toPerl,
|
|
179
|
+
toPerlWarn,
|
|
180
|
+
supportedArgs as supportedArgsPerl,
|
|
181
|
+
} from "./generators/perl.js";
|
|
182
|
+
import {
|
|
183
|
+
_toPhp,
|
|
184
|
+
toPhpWarn,
|
|
185
|
+
supportedArgs as supportedArgsPhp,
|
|
186
|
+
} from "./generators/php/php.js";
|
|
187
|
+
import {
|
|
188
|
+
_toPhpGuzzle,
|
|
189
|
+
toPhpGuzzleWarn,
|
|
190
|
+
supportedArgs as supportedArgsPhpGuzzle,
|
|
191
|
+
} from "./generators/php/guzzle.js";
|
|
192
|
+
import {
|
|
193
|
+
_toPhpRequests,
|
|
194
|
+
toPhpRequestsWarn,
|
|
195
|
+
supportedArgs as supportedArgsPhpRequests,
|
|
196
|
+
} from "./generators/php/requests.js";
|
|
197
|
+
import {
|
|
198
|
+
_toPowershellRestMethod,
|
|
199
|
+
toPowershellRestMethodWarn,
|
|
200
|
+
supportedArgs as supportedArgsPowershellRestMethod,
|
|
201
|
+
} from "./generators/powershell.js";
|
|
202
|
+
import {
|
|
203
|
+
_toPowershellWebRequest,
|
|
204
|
+
toPowershellWebRequestWarn,
|
|
205
|
+
supportedArgs as supportedArgsPowershellWebRequest,
|
|
206
|
+
} from "./generators/powershell.js";
|
|
207
|
+
import {
|
|
208
|
+
_toPython,
|
|
209
|
+
toPythonWarn,
|
|
210
|
+
supportedArgs as supportedArgsPython,
|
|
211
|
+
} from "./generators/python/python.js";
|
|
212
|
+
import {
|
|
213
|
+
_toPythonHttp,
|
|
214
|
+
toPythonHttpWarn,
|
|
215
|
+
supportedArgs as supportedArgsPythonHttp,
|
|
216
|
+
} from "./generators/python/http.js";
|
|
217
|
+
import {
|
|
218
|
+
_toR,
|
|
219
|
+
toRWarn,
|
|
220
|
+
supportedArgs as supportedArgsR,
|
|
221
|
+
} from "./generators/r/httr.js";
|
|
222
|
+
import {
|
|
223
|
+
_toRHttr2,
|
|
224
|
+
toRHttr2Warn,
|
|
225
|
+
supportedArgs as supportedArgsRHttr2,
|
|
226
|
+
} from "./generators/r/httr2.js";
|
|
227
|
+
import {
|
|
228
|
+
_toRuby,
|
|
229
|
+
toRubyWarn,
|
|
230
|
+
supportedArgs as supportedArgsRuby,
|
|
231
|
+
} from "./generators/ruby/ruby.js";
|
|
232
|
+
import {
|
|
233
|
+
_toRubyHttparty,
|
|
234
|
+
toRubyHttpartyWarn,
|
|
235
|
+
supportedArgs as supportedArgsRubyHttparty,
|
|
236
|
+
} from "./generators/ruby/httparty.js";
|
|
237
|
+
import {
|
|
238
|
+
_toRust,
|
|
239
|
+
toRustWarn,
|
|
240
|
+
supportedArgs as supportedArgsRust,
|
|
241
|
+
} from "./generators/rust.js";
|
|
242
|
+
import {
|
|
243
|
+
_toSwift,
|
|
244
|
+
toSwiftWarn,
|
|
245
|
+
supportedArgs as supportedArgsSwift,
|
|
246
|
+
} from "./generators/swift.js";
|
|
247
|
+
import {
|
|
248
|
+
_toWget,
|
|
249
|
+
toWgetWarn,
|
|
250
|
+
supportedArgs as supportedArgsWget,
|
|
251
|
+
} from "./generators/wget.js";
|
|
252
|
+
|
|
253
|
+
import fs from "fs";
|
|
254
|
+
|
|
255
|
+
// This line is updated by extract_curl_args.py
|
|
256
|
+
const VERSION = "4.12.0 (curl 8.2.1)";
|
|
257
|
+
|
|
258
|
+
// sets a default in case --language isn't passed
|
|
259
|
+
const defaultLanguage = "python";
|
|
260
|
+
|
|
261
|
+
// Maps options for --language to functions
|
|
262
|
+
// NOTE: make sure to update this when adding language support
|
|
263
|
+
// prettier-ignore
|
|
264
|
+
const translate: {
|
|
265
|
+
[key: string]: [
|
|
266
|
+
(request: Request[], warnings?: Warnings) => string,
|
|
267
|
+
(curlCommand: string | string[], warnings?: Warnings) => [string, Warnings],
|
|
268
|
+
Set<string>,
|
|
269
|
+
];
|
|
270
|
+
} = {
|
|
271
|
+
ansible: [_toAnsible, toAnsibleWarn, supportedArgsAnsible],
|
|
272
|
+
c: [_toC, toCWarn, supportedArgsC],
|
|
273
|
+
cfml: [_toCFML, toCFMLWarn, supportedArgsCFML],
|
|
274
|
+
clojure: [_toClojure, toClojureWarn, supportedArgsClojure],
|
|
275
|
+
csharp: [_toCSharp, toCSharpWarn, supportedArgsCSharp],
|
|
276
|
+
"c#": [_toCSharp, toCSharpWarn, supportedArgsCSharp], // undocumented alias
|
|
277
|
+
browser: [_toJavaScript, toJavaScriptWarn, supportedArgsJavaScript], // for backwards compatibility, undocumented
|
|
278
|
+
dart: [_toDart, toDartWarn, supportedArgsDart],
|
|
279
|
+
elixir: [_toElixir, toElixirWarn, supportedArgsElixir],
|
|
280
|
+
go: [_toGo, toGoWarn, supportedArgsGo],
|
|
281
|
+
golang: [_toGo, toGoWarn, supportedArgsGo], // undocumented alias
|
|
282
|
+
har: [_toHarString, toHarStringWarn, supportedArgsHarString],
|
|
283
|
+
http: [_toHTTP, toHTTPWarn, supportedArgsHTTP],
|
|
284
|
+
httpie: [_toHttpie, toHttpieWarn, supportedArgsHttpie],
|
|
285
|
+
java: [_toJava, toJavaWarn, supportedArgsJava],
|
|
286
|
+
"java-httpurlconnection": [_toJavaHttpUrlConnection, toJavaHttpUrlConnectionWarn, supportedArgsJavaHttpUrlConnection],
|
|
287
|
+
"java-jsoup": [_toJavaJsoup, toJavaJsoupWarn, supportedArgsJavaJsoup],
|
|
288
|
+
"java-okhttp": [_toJavaOkHttp, toJavaOkHttpWarn, supportedArgsJavaOkHttp],
|
|
289
|
+
javascript: [_toJavaScript, toJavaScriptWarn, supportedArgsJavaScript],
|
|
290
|
+
"javascript-axios": [_toNodeAxios, toNodeAxiosWarn, supportedArgsNodeAxios], // undocumented alias
|
|
291
|
+
"javascript-fetch": [_toJavaScript, toJavaScriptWarn, supportedArgsJavaScript], // undocumented alias
|
|
292
|
+
"javascript-got": [_toNodeGot, toNodeGotWarn, supportedArgsNodeGot], // undocumented alias
|
|
293
|
+
"javascript-ky": [_toNodeKy, toNodeKyWarn, supportedArgsNodeKy], // undocumented alias
|
|
294
|
+
"javascript-jquery": [_toJavaScriptJquery, toJavaScriptJqueryWarn, supportedArgsJavaScriptJquery],
|
|
295
|
+
"javascript-request": [_toNodeRequest, toNodeRequestWarn, supportedArgsNodeRequest], // undocumented alias
|
|
296
|
+
"javascript-superagent": [_toNodeSuperAgent, toNodeSuperAgentWarn, supportedArgsNodeSuperAgent], // undocumented alias
|
|
297
|
+
"javascript-xhr": [_toJavaScriptXHR, toJavaScriptXHRWarn, supportedArgsJavaScriptXHR],
|
|
298
|
+
json: [_toJsonString, toJsonStringWarn, supportedArgsJsonString],
|
|
299
|
+
julia: [_toJulia, toJuliaWarn, supportedArgsJulia],
|
|
300
|
+
kotlin: [_toKotlin, toKotlinWarn, supportedArgsKotlin],
|
|
301
|
+
lua: [_toLua, toLuaWarn, supportedArgsLua],
|
|
302
|
+
matlab: [_toMATLAB, toMATLABWarn, supportedArgsMATLAB],
|
|
303
|
+
node: [_toNode, toNodeWarn, supportedArgsNode],
|
|
304
|
+
"node-axios": [_toNodeAxios, toNodeAxiosWarn, supportedArgsNodeAxios],
|
|
305
|
+
"node-fetch": [_toNode, toNodeWarn, supportedArgsNode], // undocumented alias
|
|
306
|
+
"node-got": [_toNodeGot, toNodeGotWarn, supportedArgsNodeGot],
|
|
307
|
+
"node-http": [_toNodeHttp, toNodeHttpWarn, supportedArgsNodeHttp], // undocumented alias
|
|
308
|
+
"node-ky": [_toNodeKy, toNodeKyWarn, supportedArgsNodeKy],
|
|
309
|
+
"node-jquery": [_toJavaScriptJquery, toJavaScriptJqueryWarn, supportedArgsJavaScriptJquery], // undocumented alias
|
|
310
|
+
"node-request": [_toNodeRequest, toNodeRequestWarn, supportedArgsNodeRequest],
|
|
311
|
+
"node-superagent": [_toNodeSuperAgent, toNodeSuperAgentWarn, supportedArgsNodeSuperAgent],
|
|
312
|
+
"node-xhr": [_toJavaScriptXHR, toJavaScriptXHRWarn, supportedArgsJavaScriptXHR], // undocumented alias
|
|
313
|
+
nodejs: [_toNode, toNodeWarn, supportedArgsNode], // undocumented alias
|
|
314
|
+
"nodejs-axios": [_toNodeAxios, toNodeAxiosWarn, supportedArgsNodeAxios], // undocumented alias
|
|
315
|
+
"nodejs-fetch": [_toNode, toNodeWarn, supportedArgsNode], // undocumented alias
|
|
316
|
+
"nodejs-got": [_toNodeGot, toNodeGotWarn, supportedArgsNodeGot], // undocumented alias
|
|
317
|
+
"nodejs-http": [_toNodeHttp, toNodeHttpWarn, supportedArgsNodeHttp], // undocumented alias
|
|
318
|
+
"nodejs-ky": [_toNodeKy, toNodeKyWarn, supportedArgsNodeKy], // undocumented alias
|
|
319
|
+
"nodejs-jquery": [_toJavaScriptJquery, toJavaScriptJqueryWarn, supportedArgsJavaScriptJquery], // undocumented alias
|
|
320
|
+
"nodejs-request": [_toNodeRequest, toNodeRequestWarn, supportedArgsNodeRequest], // undocumented alias
|
|
321
|
+
"nodejs-superagent": [_toNodeSuperAgent, toNodeSuperAgentWarn, supportedArgsNodeSuperAgent], // undocumented alias
|
|
322
|
+
"nodejs-xhr": [_toJavaScriptXHR, toJavaScriptXHRWarn, supportedArgsJavaScriptXHR], // undocumented alias
|
|
323
|
+
objc: [_toObjectiveC, toObjectiveCWarn, supportedArgsObjectiveC],
|
|
324
|
+
objectivec: [_toObjectiveC, toObjectiveCWarn, supportedArgsObjectiveC], // undocumented alias
|
|
325
|
+
"objective-c": [_toObjectiveC, toObjectiveCWarn, supportedArgsObjectiveC], // undocumented alias
|
|
326
|
+
ocaml: [_toOCaml, toOCamlWarn, supportedArgsOCaml],
|
|
327
|
+
perl: [_toPerl, toPerlWarn, supportedArgsPerl],
|
|
328
|
+
php: [_toPhp, toPhpWarn, supportedArgsPhp],
|
|
329
|
+
"php-curl": [_toPhp, toPhpWarn, supportedArgsPhp], // undocumented alias
|
|
330
|
+
"php-guzzle": [_toPhpGuzzle, toPhpGuzzleWarn, supportedArgsPhpGuzzle],
|
|
331
|
+
"php-requests": [_toPhpRequests, toPhpRequestsWarn, supportedArgsPhpRequests],
|
|
332
|
+
powershell: [_toPowershellRestMethod, toPowershellRestMethodWarn, supportedArgsPowershellRestMethod],
|
|
333
|
+
"powershell-restmethod": [_toPowershellRestMethod, toPowershellRestMethodWarn, supportedArgsPowershellRestMethod], // undocumented alias
|
|
334
|
+
"powershell-webrequest": [_toPowershellWebRequest, toPowershellWebRequestWarn, supportedArgsPowershellWebRequest],
|
|
335
|
+
python: [_toPython, toPythonWarn, supportedArgsPython],
|
|
336
|
+
"python-http": [_toPythonHttp, toPythonHttpWarn, supportedArgsPythonHttp],
|
|
337
|
+
"python-httpclient": [_toPythonHttp, toPythonHttpWarn, supportedArgsPythonHttp], // undocumented alias
|
|
338
|
+
r: [_toR, toRWarn, supportedArgsR],
|
|
339
|
+
"r-httr": [_toR, toRWarn, supportedArgsR], // undocumented alias
|
|
340
|
+
"r-httr2": [_toRHttr2, toRHttr2Warn, supportedArgsRHttr2],
|
|
341
|
+
ruby: [_toRuby, toRubyWarn, supportedArgsRuby],
|
|
342
|
+
"ruby-httparty": [_toRubyHttparty, toRubyHttpartyWarn, supportedArgsRubyHttparty],
|
|
343
|
+
rust: [_toRust, toRustWarn, supportedArgsRust],
|
|
344
|
+
swift: [_toSwift, toSwiftWarn, supportedArgsSwift],
|
|
345
|
+
wget: [_toWget, toWgetWarn, supportedArgsWget],
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const USAGE = `Usage: curlconverter [--language <language>] [-] [curl_options...]
|
|
349
|
+
|
|
350
|
+
language: the language to convert the curl command to. The choices are
|
|
351
|
+
ansible
|
|
352
|
+
c
|
|
353
|
+
cfml
|
|
354
|
+
clojure
|
|
355
|
+
csharp
|
|
356
|
+
dart
|
|
357
|
+
elixir
|
|
358
|
+
go
|
|
359
|
+
har
|
|
360
|
+
http
|
|
361
|
+
httpie
|
|
362
|
+
java
|
|
363
|
+
java-httpurlconnection
|
|
364
|
+
java-jsoup
|
|
365
|
+
java-okhttp
|
|
366
|
+
javascript
|
|
367
|
+
javascript-jquery
|
|
368
|
+
javascript-xhr
|
|
369
|
+
json
|
|
370
|
+
julia
|
|
371
|
+
kotlin
|
|
372
|
+
lua
|
|
373
|
+
matlab
|
|
374
|
+
node
|
|
375
|
+
node-axios
|
|
376
|
+
node-http
|
|
377
|
+
node-got
|
|
378
|
+
node-ky
|
|
379
|
+
node-request
|
|
380
|
+
node-superagent
|
|
381
|
+
objc
|
|
382
|
+
ocaml
|
|
383
|
+
perl
|
|
384
|
+
php
|
|
385
|
+
php-guzzle
|
|
386
|
+
php-requests
|
|
387
|
+
powershell
|
|
388
|
+
powershell-webrequest
|
|
389
|
+
python (the default)
|
|
390
|
+
r
|
|
391
|
+
r-httr2
|
|
392
|
+
ruby
|
|
393
|
+
ruby-httparty
|
|
394
|
+
rust
|
|
395
|
+
swift
|
|
396
|
+
wget
|
|
397
|
+
|
|
398
|
+
-: read curl command from stdin
|
|
399
|
+
|
|
400
|
+
--verbose/-v: print warnings and error tracebacks
|
|
401
|
+
|
|
402
|
+
curl_options: these should be passed exactly as they would be passed to curl.
|
|
403
|
+
see 'curl --help' or 'curl --manual' for which options are allowed here`;
|
|
404
|
+
|
|
405
|
+
const curlconverterLongOpts: LongOpts = {
|
|
406
|
+
...curlLongOpts,
|
|
407
|
+
language: { type: "string", name: "language" },
|
|
408
|
+
stdin: { type: "bool", name: "stdin" },
|
|
409
|
+
};
|
|
410
|
+
const curlconverterShortOpts: ShortOpts = {
|
|
411
|
+
...curlShortOpts,
|
|
412
|
+
// a single "-" (dash) tells curlconverter to read input from stdin
|
|
413
|
+
"": "stdin",
|
|
414
|
+
};
|
|
415
|
+
|
|
416
|
+
function printWarnings(warnings: Warnings, verbose: boolean): Warnings {
|
|
417
|
+
if (!verbose) {
|
|
418
|
+
return warnings;
|
|
419
|
+
}
|
|
420
|
+
for (const w of warnings) {
|
|
421
|
+
for (const line of w[1].trim().split("\n")) {
|
|
422
|
+
console.error("warning: " + line);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return [];
|
|
426
|
+
}
|
|
427
|
+
function exitWithError(error: unknown, verbose = false): never {
|
|
428
|
+
let errMsg: Error | string | unknown = error;
|
|
429
|
+
if (!verbose) {
|
|
430
|
+
if (error instanceof CCError) {
|
|
431
|
+
errMsg = "";
|
|
432
|
+
for (const line of error.message.toString().split("\n")) {
|
|
433
|
+
errMsg += "error: " + line + "\n";
|
|
434
|
+
}
|
|
435
|
+
errMsg = (errMsg as string).trimEnd();
|
|
436
|
+
} else if (error instanceof Error) {
|
|
437
|
+
// .toString() removes the traceback
|
|
438
|
+
errMsg = error.toString();
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
console.error(errMsg);
|
|
442
|
+
process.exit(2); // curl exits with 2 so we do too
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// argv is ['node', 'cli.js', ...]
|
|
446
|
+
// parseArgs() ignores the first argument but we need to remove "node"
|
|
447
|
+
const argv = process.argv.slice(1).map((arg) => new Word(arg));
|
|
448
|
+
let global_, seenArgs;
|
|
449
|
+
let warnings: Warnings = [];
|
|
450
|
+
try {
|
|
451
|
+
[global_, seenArgs] = parseArgs(
|
|
452
|
+
argv,
|
|
453
|
+
curlconverterLongOpts,
|
|
454
|
+
curlLongOptsShortened,
|
|
455
|
+
curlconverterShortOpts,
|
|
456
|
+
undefined,
|
|
457
|
+
warnings,
|
|
458
|
+
);
|
|
459
|
+
} catch (e) {
|
|
460
|
+
exitWithError(e);
|
|
461
|
+
}
|
|
462
|
+
if (global_.help) {
|
|
463
|
+
console.log(USAGE.trim());
|
|
464
|
+
process.exit(0);
|
|
465
|
+
}
|
|
466
|
+
if (global_.version) {
|
|
467
|
+
console.log("curlconverter " + VERSION);
|
|
468
|
+
process.exit(0);
|
|
469
|
+
}
|
|
470
|
+
const verbose = !!global_.verbose;
|
|
471
|
+
const commandFromStdin = global_.stdin;
|
|
472
|
+
const language = global_.language || defaultLanguage;
|
|
473
|
+
if (!has(translate, language)) {
|
|
474
|
+
exitWithError(
|
|
475
|
+
new CCError(
|
|
476
|
+
"unexpected --language: " +
|
|
477
|
+
JSON.stringify(language) +
|
|
478
|
+
"\n" +
|
|
479
|
+
"must be one of: " +
|
|
480
|
+
Object.keys(translate).sort().join(", "),
|
|
481
|
+
),
|
|
482
|
+
verbose,
|
|
483
|
+
);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (!seenArgs.length) {
|
|
487
|
+
console.log(USAGE.trim());
|
|
488
|
+
process.exit(2);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
const [generator, warnGenerator, supportedArgs] = translate[language];
|
|
492
|
+
const extraArgs = seenArgs.filter((a) => {
|
|
493
|
+
const [arg, actual] = a;
|
|
494
|
+
const ignore = ["stdin", "verbose", "language"].includes(arg);
|
|
495
|
+
if (!ignore && !supportedArgs.has(arg)) {
|
|
496
|
+
warnings.push([
|
|
497
|
+
arg,
|
|
498
|
+
actual + " is not a supported option",
|
|
499
|
+
// + (longArg.removed ? ", it was removed in curl " + longArg.removed : ""),
|
|
500
|
+
]);
|
|
501
|
+
}
|
|
502
|
+
return !ignore;
|
|
503
|
+
});
|
|
504
|
+
|
|
505
|
+
let code;
|
|
506
|
+
if (commandFromStdin) {
|
|
507
|
+
// This lets you do
|
|
508
|
+
// echo curl example.com | curlconverter --verbose
|
|
509
|
+
// TODO: remove repeated args
|
|
510
|
+
if (extraArgs.length > 0) {
|
|
511
|
+
// Throw an error so that if user typos something like
|
|
512
|
+
// curlconverter - -data
|
|
513
|
+
// they aren't stuck with what looks like a hung terminal.
|
|
514
|
+
const extraArgsStr = extraArgs.map((a) => a[1]).join(", ");
|
|
515
|
+
exitWithError(
|
|
516
|
+
new CCError(
|
|
517
|
+
"if you pass --stdin or -, you can't also pass " + extraArgsStr,
|
|
518
|
+
),
|
|
519
|
+
verbose,
|
|
520
|
+
);
|
|
521
|
+
}
|
|
522
|
+
const input = fs.readFileSync(0, "utf8");
|
|
523
|
+
try {
|
|
524
|
+
[code, warnings] = warnGenerator(input, warnings);
|
|
525
|
+
} catch (e) {
|
|
526
|
+
printWarnings(warnings, true); // print warnings to help figure out the error
|
|
527
|
+
exitWithError(e, verbose);
|
|
528
|
+
}
|
|
529
|
+
warnings = printWarnings(warnings, verbose);
|
|
530
|
+
} else {
|
|
531
|
+
warnings = printWarnings(warnings, verbose);
|
|
532
|
+
|
|
533
|
+
let stdin;
|
|
534
|
+
if (!process.stdin.isTTY) {
|
|
535
|
+
// TODO: what if there's an EOF character? does curl read each @- until EOF?
|
|
536
|
+
stdin = new Word(fs.readFileSync(0).toString());
|
|
537
|
+
}
|
|
538
|
+
let requests;
|
|
539
|
+
try {
|
|
540
|
+
requests = buildRequests(global_, stdin);
|
|
541
|
+
} catch (e) {
|
|
542
|
+
exitWithError(e, verbose);
|
|
543
|
+
}
|
|
544
|
+
warnings = printWarnings(warnings, verbose);
|
|
545
|
+
// Warning for users using the pre-4.0 CLI
|
|
546
|
+
if (requests[0].urls[0].originalUrl.startsWith("curl ")) {
|
|
547
|
+
console.error(`\
|
|
548
|
+
warning: Passing a whole curl command as a single argument?
|
|
549
|
+
warning: Pass options to curlconverter as if it was curl instead:
|
|
550
|
+
warning: curlconverter 'curl example.com' -> curlconverter example.com`);
|
|
551
|
+
}
|
|
552
|
+
try {
|
|
553
|
+
code = generator(requests, warnings);
|
|
554
|
+
} catch (e) {
|
|
555
|
+
exitWithError(e, verbose);
|
|
556
|
+
}
|
|
557
|
+
warnings = printWarnings(warnings, verbose);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
printWarnings(warnings, verbose);
|
|
561
|
+
process.stdout.write(code);
|