diff options
author | Akshay <[email protected]> | 2023-05-07 12:41:48 +0100 |
---|---|---|
committer | Akshay <[email protected]> | 2023-05-07 12:41:48 +0100 |
commit | f13e8be9f32c5ca7f70dc809e3d43144f8e31396 (patch) | |
tree | b0cf92d61a3ae3780cea633697e6cf5104132984 | |
parent | 83c91eeeab4080d4dccd87607cf887e0133aa625 (diff) |
progress
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Cargo.lock | 1569 | ||||
-rw-r--r-- | Cargo.toml | 12 | ||||
-rw-r--r-- | flake.nix | 10 | ||||
-rw-r--r-- | src/dirs.rs | 17 | ||||
-rw-r--r-- | src/error.rs | 66 | ||||
-rw-r--r-- | src/feed.rs | 148 | ||||
-rw-r--r-- | src/lib.rs | 5 | ||||
-rw-r--r-- | src/main.rs | 38 | ||||
-rw-r--r-- | src/manager.rs | 107 | ||||
-rw-r--r-- | src/status.rs | 42 |
11 files changed, 2007 insertions, 8 deletions
@@ -1 +1,2 @@ | |||
1 | /target | 1 | /target |
2 | /result | ||
@@ -3,5 +3,1572 @@ | |||
3 | version = 3 | 3 | version = 3 |
4 | 4 | ||
5 | [[package]] | 5 | [[package]] |
6 | name = "rust-bin" | 6 | name = "aho-corasick" |
7 | version = "1.0.1" | ||
8 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
9 | checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" | ||
10 | dependencies = [ | ||
11 | "memchr", | ||
12 | ] | ||
13 | |||
14 | [[package]] | ||
15 | name = "android_system_properties" | ||
16 | version = "0.1.5" | ||
17 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
18 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" | ||
19 | dependencies = [ | ||
20 | "libc", | ||
21 | ] | ||
22 | |||
23 | [[package]] | ||
24 | name = "anstream" | ||
25 | version = "0.3.2" | ||
26 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
27 | checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" | ||
28 | dependencies = [ | ||
29 | "anstyle", | ||
30 | "anstyle-parse", | ||
31 | "anstyle-query", | ||
32 | "anstyle-wincon", | ||
33 | "colorchoice", | ||
34 | "is-terminal", | ||
35 | "utf8parse", | ||
36 | ] | ||
37 | |||
38 | [[package]] | ||
39 | name = "anstyle" | ||
40 | version = "1.0.0" | ||
41 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
42 | checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" | ||
43 | |||
44 | [[package]] | ||
45 | name = "anstyle-parse" | ||
46 | version = "0.2.0" | ||
47 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
48 | checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" | ||
49 | dependencies = [ | ||
50 | "utf8parse", | ||
51 | ] | ||
52 | |||
53 | [[package]] | ||
54 | name = "anstyle-query" | ||
55 | version = "1.0.0" | ||
56 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
57 | checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" | ||
58 | dependencies = [ | ||
59 | "windows-sys 0.48.0", | ||
60 | ] | ||
61 | |||
62 | [[package]] | ||
63 | name = "anstyle-wincon" | ||
64 | version = "1.0.1" | ||
65 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
66 | checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" | ||
67 | dependencies = [ | ||
68 | "anstyle", | ||
69 | "windows-sys 0.48.0", | ||
70 | ] | ||
71 | |||
72 | [[package]] | ||
73 | name = "autocfg" | ||
74 | version = "1.1.0" | ||
75 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
76 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" | ||
77 | |||
78 | [[package]] | ||
79 | name = "base64" | ||
80 | version = "0.21.0" | ||
81 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
82 | checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" | ||
83 | |||
84 | [[package]] | ||
85 | name = "bitflags" | ||
86 | version = "1.3.2" | ||
87 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
88 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" | ||
89 | |||
90 | [[package]] | ||
91 | name = "bumpalo" | ||
92 | version = "3.12.1" | ||
93 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
94 | checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" | ||
95 | |||
96 | [[package]] | ||
97 | name = "bytes" | ||
98 | version = "1.4.0" | ||
99 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
100 | checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" | ||
101 | |||
102 | [[package]] | ||
103 | name = "cc" | ||
104 | version = "1.0.79" | ||
105 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
106 | checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" | ||
107 | |||
108 | [[package]] | ||
109 | name = "cfg-if" | ||
110 | version = "1.0.0" | ||
111 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
112 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||
113 | |||
114 | [[package]] | ||
115 | name = "chrono" | ||
116 | version = "0.4.24" | ||
117 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
118 | checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" | ||
119 | dependencies = [ | ||
120 | "iana-time-zone", | ||
121 | "js-sys", | ||
122 | "num-integer", | ||
123 | "num-traits", | ||
124 | "serde", | ||
125 | "time", | ||
126 | "wasm-bindgen", | ||
127 | "winapi", | ||
128 | ] | ||
129 | |||
130 | [[package]] | ||
131 | name = "clap" | ||
132 | version = "4.2.7" | ||
133 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
134 | checksum = "34d21f9bf1b425d2968943631ec91202fe5e837264063503708b83013f8fc938" | ||
135 | dependencies = [ | ||
136 | "clap_builder", | ||
137 | ] | ||
138 | |||
139 | [[package]] | ||
140 | name = "clap_builder" | ||
141 | version = "4.2.7" | ||
142 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
143 | checksum = "914c8c79fb560f238ef6429439a30023c862f7a28e688c58f7203f12b29970bd" | ||
144 | dependencies = [ | ||
145 | "anstream", | ||
146 | "anstyle", | ||
147 | "bitflags", | ||
148 | "clap_lex", | ||
149 | "strsim", | ||
150 | ] | ||
151 | |||
152 | [[package]] | ||
153 | name = "clap_lex" | ||
154 | version = "0.4.1" | ||
155 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
156 | checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" | ||
157 | |||
158 | [[package]] | ||
159 | name = "codespan-reporting" | ||
160 | version = "0.11.1" | ||
161 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
162 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" | ||
163 | dependencies = [ | ||
164 | "termcolor", | ||
165 | "unicode-width", | ||
166 | ] | ||
167 | |||
168 | [[package]] | ||
169 | name = "colorchoice" | ||
170 | version = "1.0.0" | ||
171 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
172 | checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" | ||
173 | |||
174 | [[package]] | ||
175 | name = "core-foundation" | ||
176 | version = "0.9.3" | ||
177 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
178 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" | ||
179 | dependencies = [ | ||
180 | "core-foundation-sys", | ||
181 | "libc", | ||
182 | ] | ||
183 | |||
184 | [[package]] | ||
185 | name = "core-foundation-sys" | ||
186 | version = "0.8.4" | ||
187 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
188 | checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" | ||
189 | |||
190 | [[package]] | ||
191 | name = "cxx" | ||
192 | version = "1.0.94" | ||
193 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
194 | checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" | ||
195 | dependencies = [ | ||
196 | "cc", | ||
197 | "cxxbridge-flags", | ||
198 | "cxxbridge-macro", | ||
199 | "link-cplusplus", | ||
200 | ] | ||
201 | |||
202 | [[package]] | ||
203 | name = "cxx-build" | ||
204 | version = "1.0.94" | ||
205 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
206 | checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" | ||
207 | dependencies = [ | ||
208 | "cc", | ||
209 | "codespan-reporting", | ||
210 | "once_cell", | ||
211 | "proc-macro2", | ||
212 | "quote", | ||
213 | "scratch", | ||
214 | "syn 2.0.15", | ||
215 | ] | ||
216 | |||
217 | [[package]] | ||
218 | name = "cxxbridge-flags" | ||
219 | version = "1.0.94" | ||
220 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
221 | checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" | ||
222 | |||
223 | [[package]] | ||
224 | name = "cxxbridge-macro" | ||
225 | version = "1.0.94" | ||
226 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
227 | checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" | ||
228 | dependencies = [ | ||
229 | "proc-macro2", | ||
230 | "quote", | ||
231 | "syn 2.0.15", | ||
232 | ] | ||
233 | |||
234 | [[package]] | ||
235 | name = "encoding_rs" | ||
236 | version = "0.8.32" | ||
237 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
238 | checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" | ||
239 | dependencies = [ | ||
240 | "cfg-if", | ||
241 | ] | ||
242 | |||
243 | [[package]] | ||
244 | name = "errno" | ||
245 | version = "0.3.1" | ||
246 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
247 | checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" | ||
248 | dependencies = [ | ||
249 | "errno-dragonfly", | ||
250 | "libc", | ||
251 | "windows-sys 0.48.0", | ||
252 | ] | ||
253 | |||
254 | [[package]] | ||
255 | name = "errno-dragonfly" | ||
256 | version = "0.1.2" | ||
257 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
258 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" | ||
259 | dependencies = [ | ||
260 | "cc", | ||
261 | "libc", | ||
262 | ] | ||
263 | |||
264 | [[package]] | ||
265 | name = "fastrand" | ||
266 | version = "1.9.0" | ||
267 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
268 | checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" | ||
269 | dependencies = [ | ||
270 | "instant", | ||
271 | ] | ||
272 | |||
273 | [[package]] | ||
274 | name = "feed-rs" | ||
275 | version = "1.3.0" | ||
276 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
277 | checksum = "9dbec361cb401c1b86aea784fb809073733da06b1a1fd794222e7bf9845db327" | ||
278 | dependencies = [ | ||
279 | "chrono", | ||
280 | "lazy_static", | ||
281 | "mime", | ||
282 | "quick-xml", | ||
283 | "regex", | ||
284 | "serde", | ||
285 | "serde_json", | ||
286 | "siphasher", | ||
287 | "url", | ||
288 | "uuid", | ||
289 | ] | ||
290 | |||
291 | [[package]] | ||
292 | name = "fnv" | ||
293 | version = "1.0.7" | ||
294 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
295 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" | ||
296 | |||
297 | [[package]] | ||
298 | name = "foreign-types" | ||
299 | version = "0.3.2" | ||
300 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
301 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" | ||
302 | dependencies = [ | ||
303 | "foreign-types-shared", | ||
304 | ] | ||
305 | |||
306 | [[package]] | ||
307 | name = "foreign-types-shared" | ||
308 | version = "0.1.1" | ||
309 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
310 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" | ||
311 | |||
312 | [[package]] | ||
313 | name = "form_urlencoded" | ||
314 | version = "1.1.0" | ||
315 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
316 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" | ||
317 | dependencies = [ | ||
318 | "percent-encoding", | ||
319 | ] | ||
320 | |||
321 | [[package]] | ||
322 | name = "futures" | ||
323 | version = "0.3.28" | ||
324 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
325 | checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" | ||
326 | dependencies = [ | ||
327 | "futures-channel", | ||
328 | "futures-core", | ||
329 | "futures-executor", | ||
330 | "futures-io", | ||
331 | "futures-sink", | ||
332 | "futures-task", | ||
333 | "futures-util", | ||
334 | ] | ||
335 | |||
336 | [[package]] | ||
337 | name = "futures-channel" | ||
338 | version = "0.3.28" | ||
339 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
340 | checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" | ||
341 | dependencies = [ | ||
342 | "futures-core", | ||
343 | "futures-sink", | ||
344 | ] | ||
345 | |||
346 | [[package]] | ||
347 | name = "futures-core" | ||
348 | version = "0.3.28" | ||
349 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
350 | checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" | ||
351 | |||
352 | [[package]] | ||
353 | name = "futures-executor" | ||
354 | version = "0.3.28" | ||
355 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
356 | checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" | ||
357 | dependencies = [ | ||
358 | "futures-core", | ||
359 | "futures-task", | ||
360 | "futures-util", | ||
361 | ] | ||
362 | |||
363 | [[package]] | ||
364 | name = "futures-io" | ||
365 | version = "0.3.28" | ||
366 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
367 | checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" | ||
368 | |||
369 | [[package]] | ||
370 | name = "futures-macro" | ||
371 | version = "0.3.28" | ||
372 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
373 | checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" | ||
374 | dependencies = [ | ||
375 | "proc-macro2", | ||
376 | "quote", | ||
377 | "syn 2.0.15", | ||
378 | ] | ||
379 | |||
380 | [[package]] | ||
381 | name = "futures-sink" | ||
382 | version = "0.3.28" | ||
383 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
384 | checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" | ||
385 | |||
386 | [[package]] | ||
387 | name = "futures-task" | ||
388 | version = "0.3.28" | ||
389 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
390 | checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" | ||
391 | |||
392 | [[package]] | ||
393 | name = "futures-util" | ||
394 | version = "0.3.28" | ||
395 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
396 | checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" | ||
397 | dependencies = [ | ||
398 | "futures-channel", | ||
399 | "futures-core", | ||
400 | "futures-io", | ||
401 | "futures-macro", | ||
402 | "futures-sink", | ||
403 | "futures-task", | ||
404 | "memchr", | ||
405 | "pin-project-lite", | ||
406 | "pin-utils", | ||
407 | "slab", | ||
408 | ] | ||
409 | |||
410 | [[package]] | ||
411 | name = "getrandom" | ||
412 | version = "0.2.9" | ||
413 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
414 | checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" | ||
415 | dependencies = [ | ||
416 | "cfg-if", | ||
417 | "libc", | ||
418 | "wasi 0.11.0+wasi-snapshot-preview1", | ||
419 | ] | ||
420 | |||
421 | [[package]] | ||
422 | name = "h2" | ||
423 | version = "0.3.18" | ||
424 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
425 | checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" | ||
426 | dependencies = [ | ||
427 | "bytes", | ||
428 | "fnv", | ||
429 | "futures-core", | ||
430 | "futures-sink", | ||
431 | "futures-util", | ||
432 | "http", | ||
433 | "indexmap", | ||
434 | "slab", | ||
435 | "tokio", | ||
436 | "tokio-util", | ||
437 | "tracing", | ||
438 | ] | ||
439 | |||
440 | [[package]] | ||
441 | name = "hashbrown" | ||
442 | version = "0.12.3" | ||
443 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
444 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" | ||
445 | |||
446 | [[package]] | ||
447 | name = "hermit-abi" | ||
448 | version = "0.3.1" | ||
449 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
450 | checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" | ||
451 | |||
452 | [[package]] | ||
453 | name = "http" | ||
454 | version = "0.2.9" | ||
455 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
456 | checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" | ||
457 | dependencies = [ | ||
458 | "bytes", | ||
459 | "fnv", | ||
460 | "itoa", | ||
461 | ] | ||
462 | |||
463 | [[package]] | ||
464 | name = "http-body" | ||
465 | version = "0.4.5" | ||
466 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
467 | checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" | ||
468 | dependencies = [ | ||
469 | "bytes", | ||
470 | "http", | ||
471 | "pin-project-lite", | ||
472 | ] | ||
473 | |||
474 | [[package]] | ||
475 | name = "httparse" | ||
476 | version = "1.8.0" | ||
477 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
478 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" | ||
479 | |||
480 | [[package]] | ||
481 | name = "httpdate" | ||
482 | version = "1.0.2" | ||
483 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
484 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" | ||
485 | |||
486 | [[package]] | ||
487 | name = "hyper" | ||
488 | version = "0.14.26" | ||
489 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
490 | checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" | ||
491 | dependencies = [ | ||
492 | "bytes", | ||
493 | "futures-channel", | ||
494 | "futures-core", | ||
495 | "futures-util", | ||
496 | "h2", | ||
497 | "http", | ||
498 | "http-body", | ||
499 | "httparse", | ||
500 | "httpdate", | ||
501 | "itoa", | ||
502 | "pin-project-lite", | ||
503 | "socket2", | ||
504 | "tokio", | ||
505 | "tower-service", | ||
506 | "tracing", | ||
507 | "want", | ||
508 | ] | ||
509 | |||
510 | [[package]] | ||
511 | name = "hyper-tls" | ||
512 | version = "0.5.0" | ||
513 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
514 | checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" | ||
515 | dependencies = [ | ||
516 | "bytes", | ||
517 | "hyper", | ||
518 | "native-tls", | ||
519 | "tokio", | ||
520 | "tokio-native-tls", | ||
521 | ] | ||
522 | |||
523 | [[package]] | ||
524 | name = "iana-time-zone" | ||
525 | version = "0.1.56" | ||
526 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
527 | checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" | ||
528 | dependencies = [ | ||
529 | "android_system_properties", | ||
530 | "core-foundation-sys", | ||
531 | "iana-time-zone-haiku", | ||
532 | "js-sys", | ||
533 | "wasm-bindgen", | ||
534 | "windows", | ||
535 | ] | ||
536 | |||
537 | [[package]] | ||
538 | name = "iana-time-zone-haiku" | ||
539 | version = "0.1.1" | ||
540 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
541 | checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" | ||
542 | dependencies = [ | ||
543 | "cxx", | ||
544 | "cxx-build", | ||
545 | ] | ||
546 | |||
547 | [[package]] | ||
548 | name = "idna" | ||
549 | version = "0.3.0" | ||
550 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
551 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" | ||
552 | dependencies = [ | ||
553 | "unicode-bidi", | ||
554 | "unicode-normalization", | ||
555 | ] | ||
556 | |||
557 | [[package]] | ||
558 | name = "indexmap" | ||
559 | version = "1.9.3" | ||
560 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
561 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" | ||
562 | dependencies = [ | ||
563 | "autocfg", | ||
564 | "hashbrown", | ||
565 | ] | ||
566 | |||
567 | [[package]] | ||
568 | name = "instant" | ||
569 | version = "0.1.12" | ||
570 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
571 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" | ||
572 | dependencies = [ | ||
573 | "cfg-if", | ||
574 | ] | ||
575 | |||
576 | [[package]] | ||
577 | name = "io-lifetimes" | ||
578 | version = "1.0.10" | ||
579 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
580 | checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" | ||
581 | dependencies = [ | ||
582 | "hermit-abi", | ||
583 | "libc", | ||
584 | "windows-sys 0.48.0", | ||
585 | ] | ||
586 | |||
587 | [[package]] | ||
588 | name = "ipnet" | ||
589 | version = "2.7.2" | ||
590 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
591 | checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" | ||
592 | |||
593 | [[package]] | ||
594 | name = "is-terminal" | ||
595 | version = "0.4.7" | ||
596 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
597 | checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" | ||
598 | dependencies = [ | ||
599 | "hermit-abi", | ||
600 | "io-lifetimes", | ||
601 | "rustix", | ||
602 | "windows-sys 0.48.0", | ||
603 | ] | ||
604 | |||
605 | [[package]] | ||
606 | name = "itoa" | ||
607 | version = "1.0.6" | ||
608 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
609 | checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" | ||
610 | |||
611 | [[package]] | ||
612 | name = "js-sys" | ||
613 | version = "0.3.61" | ||
614 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
615 | checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" | ||
616 | dependencies = [ | ||
617 | "wasm-bindgen", | ||
618 | ] | ||
619 | |||
620 | [[package]] | ||
621 | name = "lazy_static" | ||
622 | version = "1.4.0" | ||
623 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
624 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | ||
625 | |||
626 | [[package]] | ||
627 | name = "libc" | ||
628 | version = "0.2.142" | ||
629 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
630 | checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" | ||
631 | |||
632 | [[package]] | ||
633 | name = "link-cplusplus" | ||
634 | version = "1.0.8" | ||
635 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
636 | checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" | ||
637 | dependencies = [ | ||
638 | "cc", | ||
639 | ] | ||
640 | |||
641 | [[package]] | ||
642 | name = "linux-raw-sys" | ||
643 | version = "0.3.6" | ||
644 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
645 | checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c" | ||
646 | |||
647 | [[package]] | ||
648 | name = "log" | ||
649 | version = "0.4.17" | ||
650 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
651 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" | ||
652 | dependencies = [ | ||
653 | "cfg-if", | ||
654 | ] | ||
655 | |||
656 | [[package]] | ||
657 | name = "memchr" | ||
658 | version = "2.5.0" | ||
659 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
660 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" | ||
661 | |||
662 | [[package]] | ||
663 | name = "mime" | ||
664 | version = "0.3.17" | ||
665 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
666 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" | ||
667 | |||
668 | [[package]] | ||
669 | name = "mio" | ||
670 | version = "0.8.6" | ||
671 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
672 | checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" | ||
673 | dependencies = [ | ||
674 | "libc", | ||
675 | "log", | ||
676 | "wasi 0.11.0+wasi-snapshot-preview1", | ||
677 | "windows-sys 0.45.0", | ||
678 | ] | ||
679 | |||
680 | [[package]] | ||
681 | name = "native-tls" | ||
682 | version = "0.2.11" | ||
683 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
684 | checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" | ||
685 | dependencies = [ | ||
686 | "lazy_static", | ||
687 | "libc", | ||
688 | "log", | ||
689 | "openssl", | ||
690 | "openssl-probe", | ||
691 | "openssl-sys", | ||
692 | "schannel", | ||
693 | "security-framework", | ||
694 | "security-framework-sys", | ||
695 | "tempfile", | ||
696 | ] | ||
697 | |||
698 | [[package]] | ||
699 | name = "num-integer" | ||
700 | version = "0.1.45" | ||
701 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
702 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" | ||
703 | dependencies = [ | ||
704 | "autocfg", | ||
705 | "num-traits", | ||
706 | ] | ||
707 | |||
708 | [[package]] | ||
709 | name = "num-traits" | ||
710 | version = "0.2.15" | ||
711 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
712 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" | ||
713 | dependencies = [ | ||
714 | "autocfg", | ||
715 | ] | ||
716 | |||
717 | [[package]] | ||
718 | name = "once_cell" | ||
719 | version = "1.17.1" | ||
720 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
721 | checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" | ||
722 | |||
723 | [[package]] | ||
724 | name = "openssl" | ||
725 | version = "0.10.52" | ||
726 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
727 | checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56" | ||
728 | dependencies = [ | ||
729 | "bitflags", | ||
730 | "cfg-if", | ||
731 | "foreign-types", | ||
732 | "libc", | ||
733 | "once_cell", | ||
734 | "openssl-macros", | ||
735 | "openssl-sys", | ||
736 | ] | ||
737 | |||
738 | [[package]] | ||
739 | name = "openssl-macros" | ||
740 | version = "0.1.1" | ||
741 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
742 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" | ||
743 | dependencies = [ | ||
744 | "proc-macro2", | ||
745 | "quote", | ||
746 | "syn 2.0.15", | ||
747 | ] | ||
748 | |||
749 | [[package]] | ||
750 | name = "openssl-probe" | ||
751 | version = "0.1.5" | ||
752 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
753 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" | ||
754 | |||
755 | [[package]] | ||
756 | name = "openssl-sys" | ||
757 | version = "0.9.87" | ||
758 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
759 | checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" | ||
760 | dependencies = [ | ||
761 | "cc", | ||
762 | "libc", | ||
763 | "pkg-config", | ||
764 | "vcpkg", | ||
765 | ] | ||
766 | |||
767 | [[package]] | ||
768 | name = "percent-encoding" | ||
769 | version = "2.2.0" | ||
770 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
771 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" | ||
772 | |||
773 | [[package]] | ||
774 | name = "pin-project-lite" | ||
775 | version = "0.2.9" | ||
776 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
777 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" | ||
778 | |||
779 | [[package]] | ||
780 | name = "pin-utils" | ||
7 | version = "0.1.0" | 781 | version = "0.1.0" |
782 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
783 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" | ||
784 | |||
785 | [[package]] | ||
786 | name = "pkg-config" | ||
787 | version = "0.3.26" | ||
788 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
789 | checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" | ||
790 | |||
791 | [[package]] | ||
792 | name = "proc-macro2" | ||
793 | version = "1.0.56" | ||
794 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
795 | checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" | ||
796 | dependencies = [ | ||
797 | "unicode-ident", | ||
798 | ] | ||
799 | |||
800 | [[package]] | ||
801 | name = "quick-xml" | ||
802 | version = "0.27.1" | ||
803 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
804 | checksum = "ffc053f057dd768a56f62cd7e434c42c831d296968997e9ac1f76ea7c2d14c41" | ||
805 | dependencies = [ | ||
806 | "encoding_rs", | ||
807 | "memchr", | ||
808 | ] | ||
809 | |||
810 | [[package]] | ||
811 | name = "quote" | ||
812 | version = "1.0.26" | ||
813 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
814 | checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" | ||
815 | dependencies = [ | ||
816 | "proc-macro2", | ||
817 | ] | ||
818 | |||
819 | [[package]] | ||
820 | name = "redox_syscall" | ||
821 | version = "0.3.5" | ||
822 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
823 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" | ||
824 | dependencies = [ | ||
825 | "bitflags", | ||
826 | ] | ||
827 | |||
828 | [[package]] | ||
829 | name = "regex" | ||
830 | version = "1.8.1" | ||
831 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
832 | checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" | ||
833 | dependencies = [ | ||
834 | "aho-corasick", | ||
835 | "memchr", | ||
836 | "regex-syntax", | ||
837 | ] | ||
838 | |||
839 | [[package]] | ||
840 | name = "regex-syntax" | ||
841 | version = "0.7.1" | ||
842 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
843 | checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" | ||
844 | |||
845 | [[package]] | ||
846 | name = "reqwest" | ||
847 | version = "0.11.17" | ||
848 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
849 | checksum = "13293b639a097af28fc8a90f22add145a9c954e49d77da06263d58cf44d5fb91" | ||
850 | dependencies = [ | ||
851 | "base64", | ||
852 | "bytes", | ||
853 | "encoding_rs", | ||
854 | "futures-core", | ||
855 | "futures-util", | ||
856 | "h2", | ||
857 | "http", | ||
858 | "http-body", | ||
859 | "hyper", | ||
860 | "hyper-tls", | ||
861 | "ipnet", | ||
862 | "js-sys", | ||
863 | "log", | ||
864 | "mime", | ||
865 | "native-tls", | ||
866 | "once_cell", | ||
867 | "percent-encoding", | ||
868 | "pin-project-lite", | ||
869 | "serde", | ||
870 | "serde_json", | ||
871 | "serde_urlencoded", | ||
872 | "tokio", | ||
873 | "tokio-native-tls", | ||
874 | "tower-service", | ||
875 | "url", | ||
876 | "wasm-bindgen", | ||
877 | "wasm-bindgen-futures", | ||
878 | "web-sys", | ||
879 | "winreg", | ||
880 | ] | ||
881 | |||
882 | [[package]] | ||
883 | name = "rustix" | ||
884 | version = "0.37.17" | ||
885 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
886 | checksum = "bc809f704c03a812ac71f22456c857be34185cac691a4316f27ab0f633bb9009" | ||
887 | dependencies = [ | ||
888 | "bitflags", | ||
889 | "errno", | ||
890 | "io-lifetimes", | ||
891 | "libc", | ||
892 | "linux-raw-sys", | ||
893 | "windows-sys 0.48.0", | ||
894 | ] | ||
895 | |||
896 | [[package]] | ||
897 | name = "ryu" | ||
898 | version = "1.0.13" | ||
899 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
900 | checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" | ||
901 | |||
902 | [[package]] | ||
903 | name = "schannel" | ||
904 | version = "0.1.21" | ||
905 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
906 | checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" | ||
907 | dependencies = [ | ||
908 | "windows-sys 0.42.0", | ||
909 | ] | ||
910 | |||
911 | [[package]] | ||
912 | name = "scratch" | ||
913 | version = "1.0.5" | ||
914 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
915 | checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" | ||
916 | |||
917 | [[package]] | ||
918 | name = "security-framework" | ||
919 | version = "2.8.2" | ||
920 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
921 | checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" | ||
922 | dependencies = [ | ||
923 | "bitflags", | ||
924 | "core-foundation", | ||
925 | "core-foundation-sys", | ||
926 | "libc", | ||
927 | "security-framework-sys", | ||
928 | ] | ||
929 | |||
930 | [[package]] | ||
931 | name = "security-framework-sys" | ||
932 | version = "2.8.0" | ||
933 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
934 | checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" | ||
935 | dependencies = [ | ||
936 | "core-foundation-sys", | ||
937 | "libc", | ||
938 | ] | ||
939 | |||
940 | [[package]] | ||
941 | name = "serde" | ||
942 | version = "1.0.160" | ||
943 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
944 | checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" | ||
945 | dependencies = [ | ||
946 | "serde_derive", | ||
947 | ] | ||
948 | |||
949 | [[package]] | ||
950 | name = "serde_derive" | ||
951 | version = "1.0.160" | ||
952 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
953 | checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" | ||
954 | dependencies = [ | ||
955 | "proc-macro2", | ||
956 | "quote", | ||
957 | "syn 2.0.15", | ||
958 | ] | ||
959 | |||
960 | [[package]] | ||
961 | name = "serde_json" | ||
962 | version = "1.0.96" | ||
963 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
964 | checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" | ||
965 | dependencies = [ | ||
966 | "itoa", | ||
967 | "ryu", | ||
968 | "serde", | ||
969 | ] | ||
970 | |||
971 | [[package]] | ||
972 | name = "serde_urlencoded" | ||
973 | version = "0.7.1" | ||
974 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
975 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" | ||
976 | dependencies = [ | ||
977 | "form_urlencoded", | ||
978 | "itoa", | ||
979 | "ryu", | ||
980 | "serde", | ||
981 | ] | ||
982 | |||
983 | [[package]] | ||
984 | name = "serde_yaml" | ||
985 | version = "0.9.21" | ||
986 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
987 | checksum = "d9d684e3ec7de3bf5466b32bd75303ac16f0736426e5a4e0d6e489559ce1249c" | ||
988 | dependencies = [ | ||
989 | "indexmap", | ||
990 | "itoa", | ||
991 | "ryu", | ||
992 | "serde", | ||
993 | "unsafe-libyaml", | ||
994 | ] | ||
995 | |||
996 | [[package]] | ||
997 | name = "siphasher" | ||
998 | version = "0.3.10" | ||
999 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1000 | checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" | ||
1001 | |||
1002 | [[package]] | ||
1003 | name = "slab" | ||
1004 | version = "0.4.8" | ||
1005 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1006 | checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" | ||
1007 | dependencies = [ | ||
1008 | "autocfg", | ||
1009 | ] | ||
1010 | |||
1011 | [[package]] | ||
1012 | name = "socket2" | ||
1013 | version = "0.4.9" | ||
1014 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1015 | checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" | ||
1016 | dependencies = [ | ||
1017 | "libc", | ||
1018 | "winapi", | ||
1019 | ] | ||
1020 | |||
1021 | [[package]] | ||
1022 | name = "strsim" | ||
1023 | version = "0.10.0" | ||
1024 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1025 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" | ||
1026 | |||
1027 | [[package]] | ||
1028 | name = "syn" | ||
1029 | version = "0.1.0" | ||
1030 | dependencies = [ | ||
1031 | "chrono", | ||
1032 | "clap", | ||
1033 | "feed-rs", | ||
1034 | "futures", | ||
1035 | "reqwest", | ||
1036 | "serde", | ||
1037 | "serde_yaml", | ||
1038 | "thiserror", | ||
1039 | "tokio", | ||
1040 | "url", | ||
1041 | ] | ||
1042 | |||
1043 | [[package]] | ||
1044 | name = "syn" | ||
1045 | version = "1.0.109" | ||
1046 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1047 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" | ||
1048 | dependencies = [ | ||
1049 | "proc-macro2", | ||
1050 | "quote", | ||
1051 | "unicode-ident", | ||
1052 | ] | ||
1053 | |||
1054 | [[package]] | ||
1055 | name = "syn" | ||
1056 | version = "2.0.15" | ||
1057 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1058 | checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" | ||
1059 | dependencies = [ | ||
1060 | "proc-macro2", | ||
1061 | "quote", | ||
1062 | "unicode-ident", | ||
1063 | ] | ||
1064 | |||
1065 | [[package]] | ||
1066 | name = "tempfile" | ||
1067 | version = "3.5.0" | ||
1068 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1069 | checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" | ||
1070 | dependencies = [ | ||
1071 | "cfg-if", | ||
1072 | "fastrand", | ||
1073 | "redox_syscall", | ||
1074 | "rustix", | ||
1075 | "windows-sys 0.45.0", | ||
1076 | ] | ||
1077 | |||
1078 | [[package]] | ||
1079 | name = "termcolor" | ||
1080 | version = "1.2.0" | ||
1081 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1082 | checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" | ||
1083 | dependencies = [ | ||
1084 | "winapi-util", | ||
1085 | ] | ||
1086 | |||
1087 | [[package]] | ||
1088 | name = "thiserror" | ||
1089 | version = "1.0.40" | ||
1090 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1091 | checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" | ||
1092 | dependencies = [ | ||
1093 | "thiserror-impl", | ||
1094 | ] | ||
1095 | |||
1096 | [[package]] | ||
1097 | name = "thiserror-impl" | ||
1098 | version = "1.0.40" | ||
1099 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1100 | checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" | ||
1101 | dependencies = [ | ||
1102 | "proc-macro2", | ||
1103 | "quote", | ||
1104 | "syn 2.0.15", | ||
1105 | ] | ||
1106 | |||
1107 | [[package]] | ||
1108 | name = "time" | ||
1109 | version = "0.1.45" | ||
1110 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1111 | checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" | ||
1112 | dependencies = [ | ||
1113 | "libc", | ||
1114 | "wasi 0.10.0+wasi-snapshot-preview1", | ||
1115 | "winapi", | ||
1116 | ] | ||
1117 | |||
1118 | [[package]] | ||
1119 | name = "tinyvec" | ||
1120 | version = "1.6.0" | ||
1121 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1122 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" | ||
1123 | dependencies = [ | ||
1124 | "tinyvec_macros", | ||
1125 | ] | ||
1126 | |||
1127 | [[package]] | ||
1128 | name = "tinyvec_macros" | ||
1129 | version = "0.1.1" | ||
1130 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1131 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" | ||
1132 | |||
1133 | [[package]] | ||
1134 | name = "tokio" | ||
1135 | version = "1.28.0" | ||
1136 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1137 | checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" | ||
1138 | dependencies = [ | ||
1139 | "autocfg", | ||
1140 | "bytes", | ||
1141 | "libc", | ||
1142 | "mio", | ||
1143 | "pin-project-lite", | ||
1144 | "socket2", | ||
1145 | "tokio-macros", | ||
1146 | "windows-sys 0.48.0", | ||
1147 | ] | ||
1148 | |||
1149 | [[package]] | ||
1150 | name = "tokio-macros" | ||
1151 | version = "2.1.0" | ||
1152 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1153 | checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" | ||
1154 | dependencies = [ | ||
1155 | "proc-macro2", | ||
1156 | "quote", | ||
1157 | "syn 2.0.15", | ||
1158 | ] | ||
1159 | |||
1160 | [[package]] | ||
1161 | name = "tokio-native-tls" | ||
1162 | version = "0.3.1" | ||
1163 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1164 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" | ||
1165 | dependencies = [ | ||
1166 | "native-tls", | ||
1167 | "tokio", | ||
1168 | ] | ||
1169 | |||
1170 | [[package]] | ||
1171 | name = "tokio-util" | ||
1172 | version = "0.7.8" | ||
1173 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1174 | checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" | ||
1175 | dependencies = [ | ||
1176 | "bytes", | ||
1177 | "futures-core", | ||
1178 | "futures-sink", | ||
1179 | "pin-project-lite", | ||
1180 | "tokio", | ||
1181 | "tracing", | ||
1182 | ] | ||
1183 | |||
1184 | [[package]] | ||
1185 | name = "tower-service" | ||
1186 | version = "0.3.2" | ||
1187 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1188 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" | ||
1189 | |||
1190 | [[package]] | ||
1191 | name = "tracing" | ||
1192 | version = "0.1.37" | ||
1193 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1194 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" | ||
1195 | dependencies = [ | ||
1196 | "cfg-if", | ||
1197 | "pin-project-lite", | ||
1198 | "tracing-core", | ||
1199 | ] | ||
1200 | |||
1201 | [[package]] | ||
1202 | name = "tracing-core" | ||
1203 | version = "0.1.30" | ||
1204 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1205 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" | ||
1206 | dependencies = [ | ||
1207 | "once_cell", | ||
1208 | ] | ||
1209 | |||
1210 | [[package]] | ||
1211 | name = "try-lock" | ||
1212 | version = "0.2.4" | ||
1213 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1214 | checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" | ||
1215 | |||
1216 | [[package]] | ||
1217 | name = "unicode-bidi" | ||
1218 | version = "0.3.13" | ||
1219 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1220 | checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" | ||
1221 | |||
1222 | [[package]] | ||
1223 | name = "unicode-ident" | ||
1224 | version = "1.0.8" | ||
1225 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1226 | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" | ||
1227 | |||
1228 | [[package]] | ||
1229 | name = "unicode-normalization" | ||
1230 | version = "0.1.22" | ||
1231 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1232 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" | ||
1233 | dependencies = [ | ||
1234 | "tinyvec", | ||
1235 | ] | ||
1236 | |||
1237 | [[package]] | ||
1238 | name = "unicode-width" | ||
1239 | version = "0.1.10" | ||
1240 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1241 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" | ||
1242 | |||
1243 | [[package]] | ||
1244 | name = "unsafe-libyaml" | ||
1245 | version = "0.2.8" | ||
1246 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1247 | checksum = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6" | ||
1248 | |||
1249 | [[package]] | ||
1250 | name = "url" | ||
1251 | version = "2.3.1" | ||
1252 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1253 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" | ||
1254 | dependencies = [ | ||
1255 | "form_urlencoded", | ||
1256 | "idna", | ||
1257 | "percent-encoding", | ||
1258 | "serde", | ||
1259 | ] | ||
1260 | |||
1261 | [[package]] | ||
1262 | name = "utf8parse" | ||
1263 | version = "0.2.1" | ||
1264 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1265 | checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" | ||
1266 | |||
1267 | [[package]] | ||
1268 | name = "uuid" | ||
1269 | version = "1.3.2" | ||
1270 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1271 | checksum = "4dad5567ad0cf5b760e5665964bec1b47dfd077ba8a2544b513f3556d3d239a2" | ||
1272 | dependencies = [ | ||
1273 | "getrandom", | ||
1274 | ] | ||
1275 | |||
1276 | [[package]] | ||
1277 | name = "vcpkg" | ||
1278 | version = "0.2.15" | ||
1279 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1280 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" | ||
1281 | |||
1282 | [[package]] | ||
1283 | name = "want" | ||
1284 | version = "0.3.0" | ||
1285 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1286 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" | ||
1287 | dependencies = [ | ||
1288 | "log", | ||
1289 | "try-lock", | ||
1290 | ] | ||
1291 | |||
1292 | [[package]] | ||
1293 | name = "wasi" | ||
1294 | version = "0.10.0+wasi-snapshot-preview1" | ||
1295 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1296 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" | ||
1297 | |||
1298 | [[package]] | ||
1299 | name = "wasi" | ||
1300 | version = "0.11.0+wasi-snapshot-preview1" | ||
1301 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1302 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" | ||
1303 | |||
1304 | [[package]] | ||
1305 | name = "wasm-bindgen" | ||
1306 | version = "0.2.84" | ||
1307 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1308 | checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" | ||
1309 | dependencies = [ | ||
1310 | "cfg-if", | ||
1311 | "wasm-bindgen-macro", | ||
1312 | ] | ||
1313 | |||
1314 | [[package]] | ||
1315 | name = "wasm-bindgen-backend" | ||
1316 | version = "0.2.84" | ||
1317 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1318 | checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" | ||
1319 | dependencies = [ | ||
1320 | "bumpalo", | ||
1321 | "log", | ||
1322 | "once_cell", | ||
1323 | "proc-macro2", | ||
1324 | "quote", | ||
1325 | "syn 1.0.109", | ||
1326 | "wasm-bindgen-shared", | ||
1327 | ] | ||
1328 | |||
1329 | [[package]] | ||
1330 | name = "wasm-bindgen-futures" | ||
1331 | version = "0.4.34" | ||
1332 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1333 | checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" | ||
1334 | dependencies = [ | ||
1335 | "cfg-if", | ||
1336 | "js-sys", | ||
1337 | "wasm-bindgen", | ||
1338 | "web-sys", | ||
1339 | ] | ||
1340 | |||
1341 | [[package]] | ||
1342 | name = "wasm-bindgen-macro" | ||
1343 | version = "0.2.84" | ||
1344 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1345 | checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" | ||
1346 | dependencies = [ | ||
1347 | "quote", | ||
1348 | "wasm-bindgen-macro-support", | ||
1349 | ] | ||
1350 | |||
1351 | [[package]] | ||
1352 | name = "wasm-bindgen-macro-support" | ||
1353 | version = "0.2.84" | ||
1354 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1355 | checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" | ||
1356 | dependencies = [ | ||
1357 | "proc-macro2", | ||
1358 | "quote", | ||
1359 | "syn 1.0.109", | ||
1360 | "wasm-bindgen-backend", | ||
1361 | "wasm-bindgen-shared", | ||
1362 | ] | ||
1363 | |||
1364 | [[package]] | ||
1365 | name = "wasm-bindgen-shared" | ||
1366 | version = "0.2.84" | ||
1367 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1368 | checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" | ||
1369 | |||
1370 | [[package]] | ||
1371 | name = "web-sys" | ||
1372 | version = "0.3.61" | ||
1373 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1374 | checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" | ||
1375 | dependencies = [ | ||
1376 | "js-sys", | ||
1377 | "wasm-bindgen", | ||
1378 | ] | ||
1379 | |||
1380 | [[package]] | ||
1381 | name = "winapi" | ||
1382 | version = "0.3.9" | ||
1383 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1384 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" | ||
1385 | dependencies = [ | ||
1386 | "winapi-i686-pc-windows-gnu", | ||
1387 | "winapi-x86_64-pc-windows-gnu", | ||
1388 | ] | ||
1389 | |||
1390 | [[package]] | ||
1391 | name = "winapi-i686-pc-windows-gnu" | ||
1392 | version = "0.4.0" | ||
1393 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1394 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" | ||
1395 | |||
1396 | [[package]] | ||
1397 | name = "winapi-util" | ||
1398 | version = "0.1.5" | ||
1399 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1400 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" | ||
1401 | dependencies = [ | ||
1402 | "winapi", | ||
1403 | ] | ||
1404 | |||
1405 | [[package]] | ||
1406 | name = "winapi-x86_64-pc-windows-gnu" | ||
1407 | version = "0.4.0" | ||
1408 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1409 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||
1410 | |||
1411 | [[package]] | ||
1412 | name = "windows" | ||
1413 | version = "0.48.0" | ||
1414 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1415 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" | ||
1416 | dependencies = [ | ||
1417 | "windows-targets 0.48.0", | ||
1418 | ] | ||
1419 | |||
1420 | [[package]] | ||
1421 | name = "windows-sys" | ||
1422 | version = "0.42.0" | ||
1423 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1424 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" | ||
1425 | dependencies = [ | ||
1426 | "windows_aarch64_gnullvm 0.42.2", | ||
1427 | "windows_aarch64_msvc 0.42.2", | ||
1428 | "windows_i686_gnu 0.42.2", | ||
1429 | "windows_i686_msvc 0.42.2", | ||
1430 | "windows_x86_64_gnu 0.42.2", | ||
1431 | "windows_x86_64_gnullvm 0.42.2", | ||
1432 | "windows_x86_64_msvc 0.42.2", | ||
1433 | ] | ||
1434 | |||
1435 | [[package]] | ||
1436 | name = "windows-sys" | ||
1437 | version = "0.45.0" | ||
1438 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1439 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" | ||
1440 | dependencies = [ | ||
1441 | "windows-targets 0.42.2", | ||
1442 | ] | ||
1443 | |||
1444 | [[package]] | ||
1445 | name = "windows-sys" | ||
1446 | version = "0.48.0" | ||
1447 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1448 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" | ||
1449 | dependencies = [ | ||
1450 | "windows-targets 0.48.0", | ||
1451 | ] | ||
1452 | |||
1453 | [[package]] | ||
1454 | name = "windows-targets" | ||
1455 | version = "0.42.2" | ||
1456 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1457 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" | ||
1458 | dependencies = [ | ||
1459 | "windows_aarch64_gnullvm 0.42.2", | ||
1460 | "windows_aarch64_msvc 0.42.2", | ||
1461 | "windows_i686_gnu 0.42.2", | ||
1462 | "windows_i686_msvc 0.42.2", | ||
1463 | "windows_x86_64_gnu 0.42.2", | ||
1464 | "windows_x86_64_gnullvm 0.42.2", | ||
1465 | "windows_x86_64_msvc 0.42.2", | ||
1466 | ] | ||
1467 | |||
1468 | [[package]] | ||
1469 | name = "windows-targets" | ||
1470 | version = "0.48.0" | ||
1471 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1472 | checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" | ||
1473 | dependencies = [ | ||
1474 | "windows_aarch64_gnullvm 0.48.0", | ||
1475 | "windows_aarch64_msvc 0.48.0", | ||
1476 | "windows_i686_gnu 0.48.0", | ||
1477 | "windows_i686_msvc 0.48.0", | ||
1478 | "windows_x86_64_gnu 0.48.0", | ||
1479 | "windows_x86_64_gnullvm 0.48.0", | ||
1480 | "windows_x86_64_msvc 0.48.0", | ||
1481 | ] | ||
1482 | |||
1483 | [[package]] | ||
1484 | name = "windows_aarch64_gnullvm" | ||
1485 | version = "0.42.2" | ||
1486 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1487 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" | ||
1488 | |||
1489 | [[package]] | ||
1490 | name = "windows_aarch64_gnullvm" | ||
1491 | version = "0.48.0" | ||
1492 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1493 | checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" | ||
1494 | |||
1495 | [[package]] | ||
1496 | name = "windows_aarch64_msvc" | ||
1497 | version = "0.42.2" | ||
1498 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1499 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" | ||
1500 | |||
1501 | [[package]] | ||
1502 | name = "windows_aarch64_msvc" | ||
1503 | version = "0.48.0" | ||
1504 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1505 | checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" | ||
1506 | |||
1507 | [[package]] | ||
1508 | name = "windows_i686_gnu" | ||
1509 | version = "0.42.2" | ||
1510 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1511 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" | ||
1512 | |||
1513 | [[package]] | ||
1514 | name = "windows_i686_gnu" | ||
1515 | version = "0.48.0" | ||
1516 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1517 | checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" | ||
1518 | |||
1519 | [[package]] | ||
1520 | name = "windows_i686_msvc" | ||
1521 | version = "0.42.2" | ||
1522 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1523 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" | ||
1524 | |||
1525 | [[package]] | ||
1526 | name = "windows_i686_msvc" | ||
1527 | version = "0.48.0" | ||
1528 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1529 | checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" | ||
1530 | |||
1531 | [[package]] | ||
1532 | name = "windows_x86_64_gnu" | ||
1533 | version = "0.42.2" | ||
1534 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1535 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" | ||
1536 | |||
1537 | [[package]] | ||
1538 | name = "windows_x86_64_gnu" | ||
1539 | version = "0.48.0" | ||
1540 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1541 | checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" | ||
1542 | |||
1543 | [[package]] | ||
1544 | name = "windows_x86_64_gnullvm" | ||
1545 | version = "0.42.2" | ||
1546 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1547 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" | ||
1548 | |||
1549 | [[package]] | ||
1550 | name = "windows_x86_64_gnullvm" | ||
1551 | version = "0.48.0" | ||
1552 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1553 | checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" | ||
1554 | |||
1555 | [[package]] | ||
1556 | name = "windows_x86_64_msvc" | ||
1557 | version = "0.42.2" | ||
1558 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1559 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" | ||
1560 | |||
1561 | [[package]] | ||
1562 | name = "windows_x86_64_msvc" | ||
1563 | version = "0.48.0" | ||
1564 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1565 | checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" | ||
1566 | |||
1567 | [[package]] | ||
1568 | name = "winreg" | ||
1569 | version = "0.10.1" | ||
1570 | source = "registry+https://github.com/rust-lang/crates.io-index" | ||
1571 | checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" | ||
1572 | dependencies = [ | ||
1573 | "winapi", | ||
1574 | ] | ||
@@ -1,8 +1,18 @@ | |||
1 | [package] | 1 | [package] |
2 | name = "rust-bin" | 2 | name = "syn" |
3 | version = "0.1.0" | 3 | version = "0.1.0" |
4 | edition = "2021" | 4 | edition = "2021" |
5 | 5 | ||
6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
7 | 7 | ||
8 | [dependencies] | 8 | [dependencies] |
9 | feed-rs = "1.3" | ||
10 | tokio = { version = "1", features = [ "rt", "macros" ]} | ||
11 | reqwest = "0.11" | ||
12 | url = { version = "2.3", features = [ "serde" ]} | ||
13 | serde = { version = "1", features = [ "derive" ]} | ||
14 | serde_yaml = "0.9" | ||
15 | chrono = { version = "0.4", features = [ "std", "serde" ] } | ||
16 | thiserror = "1" | ||
17 | futures = "0.3" | ||
18 | clap = "4.2" | ||
@@ -1,5 +1,5 @@ | |||
1 | { | 1 | { |
2 | description = "build rust binaries"; | 2 | description = "a unixy rss/atom reader"; |
3 | 3 | ||
4 | outputs = { self, nixpkgs }: | 4 | outputs = { self, nixpkgs }: |
5 | let | 5 | let |
@@ -13,7 +13,7 @@ | |||
13 | { | 13 | { |
14 | 14 | ||
15 | overlays.default = final: prev: { | 15 | overlays.default = final: prev: { |
16 | rust-bin = | 16 | syn = |
17 | let | 17 | let |
18 | packageMeta = (final.lib.importTOML ./Cargo.toml).package; | 18 | packageMeta = (final.lib.importTOML ./Cargo.toml).package; |
19 | in | 19 | in |
@@ -21,15 +21,17 @@ | |||
21 | pname = packageMeta.name; | 21 | pname = packageMeta.name; |
22 | inherit (packageMeta) version; | 22 | inherit (packageMeta) version; |
23 | src = self; | 23 | src = self; |
24 | nativeBuildInputs = [ final.pkg-config ]; | ||
25 | buildInputs = [ final.openssl ]; | ||
24 | cargoLock.lockFile = ./Cargo.lock; | 26 | cargoLock.lockFile = ./Cargo.lock; |
25 | }; | 27 | }; |
26 | }; | 28 | }; |
27 | 29 | ||
28 | packages = forAllSystems (system: { | 30 | packages = forAllSystems (system: { |
29 | inherit (nixpkgsFor."${system}") rust-bin; | 31 | inherit (nixpkgsFor."${system}") syn; |
30 | }); | 32 | }); |
31 | 33 | ||
32 | defaultPackage = forAllSystems (system: self.packages."${system}".rust-bin); | 34 | defaultPackage = forAllSystems (system: self.packages."${system}".syn); |
33 | 35 | ||
34 | devShell = forAllSystems (system: | 36 | devShell = forAllSystems (system: |
35 | let | 37 | let |
diff --git a/src/dirs.rs b/src/dirs.rs new file mode 100644 index 0000000..de7c156 --- /dev/null +++ b/src/dirs.rs | |||
@@ -0,0 +1,17 @@ | |||
1 | use std::{env, path::PathBuf}; | ||
2 | |||
3 | pub fn store_path() -> Option<PathBuf> { | ||
4 | cache_dir().map(|c| c.join("syn")) | ||
5 | } | ||
6 | |||
7 | fn cache_dir() -> Option<PathBuf> { | ||
8 | env::var_os("XDG_CACHE_HOME") | ||
9 | .map(PathBuf::from) | ||
10 | .or_else(|| home_dir().map(|h| h.join(".cache"))) | ||
11 | } | ||
12 | |||
13 | fn home_dir() -> Option<PathBuf> { | ||
14 | env::var_os("HOME") | ||
15 | .and_then(|h| if h.is_empty() { None } else { Some(h) }) | ||
16 | .map(PathBuf::from) | ||
17 | } | ||
diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..8a2059e --- /dev/null +++ b/src/error.rs | |||
@@ -0,0 +1,66 @@ | |||
1 | use feed_rs::parser; | ||
2 | use thiserror::Error; | ||
3 | use url::Url; | ||
4 | |||
5 | #[derive(Debug, Error)] | ||
6 | pub enum Error { | ||
7 | #[error("error pulling feed `{0}`: {1}")] | ||
8 | Pull(Url, PullError), | ||
9 | |||
10 | #[error("error parsing entry: {0}")] | ||
11 | Entry(#[from] EntryError), | ||
12 | |||
13 | #[error("error adding field: {0}")] | ||
14 | Add(#[from] AddError), | ||
15 | } | ||
16 | |||
17 | #[derive(Debug, Error)] | ||
18 | pub enum PullError { | ||
19 | #[error("failed to make request")] | ||
20 | Request(#[from] reqwest::Error), | ||
21 | |||
22 | #[error("invalid rss feed: {0}")] | ||
23 | Parse(#[from] parser::ParseFeedError), | ||
24 | |||
25 | #[error("failed to pull feed title")] | ||
26 | TitleUpdate, | ||
27 | |||
28 | #[error("failed to pull feed link")] | ||
29 | LinkUpdate, | ||
30 | } | ||
31 | |||
32 | #[derive(Debug, Error)] | ||
33 | pub enum EntryError { | ||
34 | #[error("missing title")] | ||
35 | MissingTitle, | ||
36 | |||
37 | #[error("missing link")] | ||
38 | MissingLink, | ||
39 | |||
40 | #[error("invalid link")] | ||
41 | InvalidLink, | ||
42 | |||
43 | #[error("missing publish-date")] | ||
44 | MissingPubDate, | ||
45 | } | ||
46 | |||
47 | #[derive(Debug, Error)] | ||
48 | pub enum AddError { | ||
49 | #[error("invalid url: {0}")] | ||
50 | InvalidUrl(String), | ||
51 | |||
52 | #[error("feed is already present")] | ||
53 | DuplicateLink, | ||
54 | } | ||
55 | |||
56 | #[derive(Debug, Error)] | ||
57 | pub enum IOError { | ||
58 | #[error("unable to create or find store path")] | ||
59 | MissingStorePath, | ||
60 | |||
61 | #[error("file error:")] | ||
62 | FileIO(#[from] std::io::Error), | ||
63 | |||
64 | #[error("yaml ser/de error")] | ||
65 | Serde(#[from] serde_yaml::Error), | ||
66 | } | ||
diff --git a/src/feed.rs b/src/feed.rs new file mode 100644 index 0000000..3926fd4 --- /dev/null +++ b/src/feed.rs | |||
@@ -0,0 +1,148 @@ | |||
1 | use std::fmt; | ||
2 | |||
3 | use crate::{ | ||
4 | error::{EntryError, PullError}, | ||
5 | status::PullStatus, | ||
6 | }; | ||
7 | |||
8 | use chrono::prelude::*; | ||
9 | use feed_rs::{ | ||
10 | model::{Entry as ChannelEntry, Feed as Channel}, | ||
11 | parser, | ||
12 | }; | ||
13 | use serde::{Deserialize, Serialize}; | ||
14 | use url::Url; | ||
15 | |||
16 | #[derive(Debug, Clone, Serialize, Deserialize)] | ||
17 | pub struct Feed { | ||
18 | // channel url | ||
19 | pub link: Url, | ||
20 | |||
21 | // channel data | ||
22 | entries: Vec<Entry>, | ||
23 | |||
24 | // channel meta | ||
25 | title: String, | ||
26 | html_link: String, | ||
27 | } | ||
28 | |||
29 | impl Feed { | ||
30 | pub fn new(link: Url) -> Self { | ||
31 | Self { | ||
32 | link, | ||
33 | entries: Vec::new(), | ||
34 | title: String::new(), | ||
35 | html_link: String::new(), | ||
36 | } | ||
37 | } | ||
38 | |||
39 | pub fn total_count(&self) -> usize { | ||
40 | self.entries.len() | ||
41 | } | ||
42 | |||
43 | pub fn unread_count(&self) -> usize { | ||
44 | self.entries.iter().filter(|e| e.unread).count() | ||
45 | } | ||
46 | |||
47 | fn update_title(&mut self, channel: &Channel) -> bool { | ||
48 | if let Some(t) = channel.title.as_ref() { | ||
49 | self.title = t.content.clone(); | ||
50 | return true; | ||
51 | } | ||
52 | false | ||
53 | } | ||
54 | |||
55 | fn update_html_link(&mut self, channel: &Channel) -> bool { | ||
56 | // update html link | ||
57 | if let Some(l) = channel.links.first() { | ||
58 | self.html_link = l.href.clone(); | ||
59 | return true; | ||
60 | } | ||
61 | false | ||
62 | } | ||
63 | |||
64 | pub fn entries(&self) -> &[Entry] { | ||
65 | self.entries.as_slice() | ||
66 | } | ||
67 | |||
68 | pub async fn pull(&mut self) -> Result<PullStatus, PullError> { | ||
69 | let content = reqwest::get(self.link.clone()).await?.bytes().await?; | ||
70 | let channel = parser::parse(&content[..])?; | ||
71 | |||
72 | // update title | ||
73 | if !self.update_title(&channel) { | ||
74 | return Err(PullError::TitleUpdate); | ||
75 | } | ||
76 | |||
77 | // update html link | ||
78 | if !self.update_html_link(&channel) { | ||
79 | return Err(PullError::LinkUpdate); | ||
80 | }; | ||
81 | |||
82 | // fetch new entries | ||
83 | let (entries, errors): (Vec<_>, Vec<_>) = channel | ||
84 | .entries | ||
85 | .iter() | ||
86 | .map(Entry::try_from) | ||
87 | .partition(Result::is_ok); | ||
88 | |||
89 | // pull status | ||
90 | let count = entries.len().saturating_sub(self.total_count()); | ||
91 | let errors = errors.into_iter().map(Result::unwrap_err).collect(); | ||
92 | |||
93 | let pull_status = PullStatus::new(count, errors); | ||
94 | |||
95 | // update entries | ||
96 | self.entries = entries.into_iter().map(Result::unwrap).collect(); | ||
97 | |||
98 | Ok(pull_status) | ||
99 | } | ||
100 | } | ||
101 | |||
102 | impl fmt::Display for Feed { | ||
103 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ||
104 | write!(f, "{}", self.title) | ||
105 | } | ||
106 | } | ||
107 | |||
108 | #[derive(Debug, Clone, Serialize, Deserialize)] | ||
109 | pub struct Entry { | ||
110 | pub title: String, | ||
111 | pub link: Url, | ||
112 | pub published: DateTime<Utc>, | ||
113 | pub unread: bool, | ||
114 | } | ||
115 | |||
116 | impl TryFrom<&ChannelEntry> for Entry { | ||
117 | type Error = EntryError; | ||
118 | fn try_from(e: &ChannelEntry) -> Result<Self, Self::Error> { | ||
119 | let title = e | ||
120 | .title | ||
121 | .as_ref() | ||
122 | .map(|t| t.content.clone()) | ||
123 | .ok_or(EntryError::MissingTitle)?; | ||
124 | let raw_link = e | ||
125 | .links | ||
126 | .first() | ||
127 | .map(|l| l.href.clone()) | ||
128 | .ok_or(EntryError::MissingLink)?; | ||
129 | let link = Url::parse(&raw_link).map_err(|_| EntryError::InvalidLink)?; | ||
130 | let published = e | ||
131 | .published | ||
132 | .or(e.updated) | ||
133 | .ok_or(EntryError::MissingPubDate)?; | ||
134 | |||
135 | Ok(Self { | ||
136 | title, | ||
137 | link, | ||
138 | published, | ||
139 | unread: true, | ||
140 | }) | ||
141 | } | ||
142 | } | ||
143 | |||
144 | impl fmt::Display for Entry { | ||
145 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ||
146 | write!(f, "{} {} {}", self.link, self.title, self.published) | ||
147 | } | ||
148 | } | ||
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..b66a7b4 --- /dev/null +++ b/src/lib.rs | |||
@@ -0,0 +1,5 @@ | |||
1 | mod dirs; | ||
2 | pub mod error; | ||
3 | pub mod feed; | ||
4 | pub mod manager; | ||
5 | pub mod status; | ||
diff --git a/src/main.rs b/src/main.rs index e7a11a9..fccc7fd 100644 --- a/src/main.rs +++ b/src/main.rs | |||
@@ -1,3 +1,37 @@ | |||
1 | fn main() { | 1 | use syn::manager::Manager; |
2 | println!("Hello, world!"); | 2 | |
3 | #[tokio::main(flavor = "current_thread")] | ||
4 | async fn main() { | ||
5 | let mut manager = Manager::default(); | ||
6 | |||
7 | let feeds = vec![ | ||
8 | "https://peppe.rs/index.xml", | ||
9 | "https://jvns.ca/atom.xml", | ||
10 | // "https://www.youtube.com/feeds/videos.xml?channel_id=UCuTaETsuCOkJ0H_GAztWt0Q", | ||
11 | ]; | ||
12 | |||
13 | for f in feeds { | ||
14 | match manager.add_feed(f).await { | ||
15 | Ok(s) => println!("{s}"), | ||
16 | Err(e) => println!("{e}"), | ||
17 | } | ||
18 | } | ||
19 | |||
20 | for entry in manager.list_entries() { | ||
21 | println!("{entry}"); | ||
22 | } | ||
23 | |||
24 | // let mut feed = Feed::new(url); | ||
25 | |||
26 | // feed.resolve().await.unwrap(); | ||
27 | |||
28 | // let last_read = DateTime::parse_from_rfc2822("Mon, 16 Mar 2020 18:30:00 +0000") | ||
29 | // .unwrap() | ||
30 | // .with_timezone(&Utc); | ||
31 | |||
32 | // feed.last_read = last_read; | ||
33 | |||
34 | // for i in feed.unread().unwrap() { | ||
35 | // println!("{}", i.title.as_ref().unwrap().content) | ||
36 | // } | ||
3 | } | 37 | } |
diff --git a/src/manager.rs b/src/manager.rs new file mode 100644 index 0000000..839c8dc --- /dev/null +++ b/src/manager.rs | |||
@@ -0,0 +1,107 @@ | |||
1 | use crate::{ | ||
2 | error::{AddError, Error, IOError, PullError}, | ||
3 | feed::{Entry, Feed}, | ||
4 | status::{PullStatus, StoreStatus}, | ||
5 | }; | ||
6 | |||
7 | use chrono::prelude::*; | ||
8 | use url::Url; | ||
9 | |||
10 | #[derive(Default)] | ||
11 | pub struct Manager { | ||
12 | feeds: Vec<Feed>, | ||
13 | } | ||
14 | |||
15 | impl Manager { | ||
16 | pub async fn add_feed(&mut self, url: &str) -> Result<PullStatus, Error> { | ||
17 | let link = Url::parse(&url).map_err(|e| AddError::InvalidUrl(e.to_string()))?; | ||
18 | |||
19 | // check if this feed is already present | ||
20 | if self.feeds.iter().any(|f| f.link == link) { | ||
21 | return Err(AddError::DuplicateLink.into()); | ||
22 | } | ||
23 | |||
24 | // construct a new feed | ||
25 | let mut feed = Feed::new(link.clone()); | ||
26 | |||
27 | let status = feed | ||
28 | .pull() | ||
29 | .await | ||
30 | .map_err(|pull_err| Error::Pull(link, pull_err))?; | ||
31 | |||
32 | // add new feed | ||
33 | self.feeds.push(feed); | ||
34 | |||
35 | Ok(status) | ||
36 | } | ||
37 | |||
38 | pub async fn pull(&mut self) -> Vec<Result<PullStatus, PullError>> { | ||
39 | futures::future::join_all(self.feeds.iter_mut().map(Feed::pull)).await | ||
40 | } | ||
41 | |||
42 | pub fn list_entries(&self) -> impl Iterator<Item = &Entry> { | ||
43 | EntryIterator { | ||
44 | all_entries: self.feeds.iter().map(Feed::entries).collect(), | ||
45 | } | ||
46 | } | ||
47 | |||
48 | pub fn list_feeds(&self) -> impl Iterator<Item = &Feed> { | ||
49 | self.feeds.iter() | ||
50 | } | ||
51 | |||
52 | pub async fn store(&self) -> Result<StoreStatus, IOError> { | ||
53 | let path = crate::dirs::store_path().ok_or(IOError::MissingStorePath)?; | ||
54 | let content = serde_yaml::to_string(&self.feeds)?; | ||
55 | std::fs::write(path, content)?; | ||
56 | |||
57 | Ok(StoreStatus::new(self.feeds.len())) | ||
58 | } | ||
59 | |||
60 | pub async fn load() -> Result<Self, IOError> { | ||
61 | let path = crate::dirs::store_path().ok_or(IOError::MissingStorePath)?; | ||
62 | let content = std::fs::read_to_string(path)?; | ||
63 | let feeds = serde_yaml::from_str(&content)?; | ||
64 | |||
65 | Ok(Self { feeds }) | ||
66 | } | ||
67 | } | ||
68 | |||
69 | struct EntryIterator<'e> { | ||
70 | all_entries: Vec<&'e [Entry]>, | ||
71 | } | ||
72 | |||
73 | impl<'e> Iterator for EntryIterator<'e> { | ||
74 | type Item = &'e Entry; | ||
75 | |||
76 | fn next(&mut self) -> Option<Self::Item> { | ||
77 | let mut min_index = None; | ||
78 | let mut last_date = DateTime::<Utc>::MIN_UTC; | ||
79 | for (idx, latest_entry) in self | ||
80 | .all_entries | ||
81 | .iter() | ||
82 | .map(|entries| entries.first()) | ||
83 | .enumerate() | ||
84 | { | ||
85 | if let Some(entry) = latest_entry { | ||
86 | if last_date < entry.published { | ||
87 | last_date = entry.published; | ||
88 | min_index = Some(idx); | ||
89 | } | ||
90 | } | ||
91 | } | ||
92 | |||
93 | match min_index { | ||
94 | Some(idx) => { | ||
95 | let entries = self.all_entries.get_mut(idx).unwrap(); | ||
96 | let e = &entries[0]; | ||
97 | if entries.len() > 1 { | ||
98 | *entries = &entries[1..]; | ||
99 | } else { | ||
100 | self.all_entries.remove(idx); | ||
101 | } | ||
102 | Some(e) | ||
103 | } | ||
104 | None => None, | ||
105 | } | ||
106 | } | ||
107 | } | ||
diff --git a/src/status.rs b/src/status.rs new file mode 100644 index 0000000..6874e88 --- /dev/null +++ b/src/status.rs | |||
@@ -0,0 +1,42 @@ | |||
1 | use crate::error::EntryError; | ||
2 | use std::fmt; | ||
3 | |||
4 | #[derive(Debug)] | ||
5 | pub struct PullStatus { | ||
6 | count: usize, | ||
7 | errors: Vec<EntryError>, | ||
8 | } | ||
9 | |||
10 | impl PullStatus { | ||
11 | pub fn new(count: usize, errors: Vec<EntryError>) -> Self { | ||
12 | Self { count, errors } | ||
13 | } | ||
14 | } | ||
15 | |||
16 | impl fmt::Display for PullStatus { | ||
17 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ||
18 | write!( | ||
19 | f, | ||
20 | "pulled {} entries with {} errors", | ||
21 | self.count, | ||
22 | self.errors.len() | ||
23 | ) | ||
24 | } | ||
25 | } | ||
26 | |||
27 | #[derive(Debug)] | ||
28 | pub struct StoreStatus { | ||
29 | count: usize, | ||
30 | } | ||
31 | |||
32 | impl StoreStatus { | ||
33 | pub fn new(count: usize) -> Self { | ||
34 | Self { count } | ||
35 | } | ||
36 | } | ||
37 | |||
38 | impl fmt::Display for StoreStatus { | ||
39 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | ||
40 | write!(f, "stored {} feeds", self.count,) | ||
41 | } | ||
42 | } | ||