irongit

The dotfiles manager.

feat: flex

huncholanehuncholaneauthored
parent 65feb56commit b94a3065e3210541e0fa23f097484e42c523f5a2Browse files

4 files changed, +1476 -143

+1344-143Cargo.lock
@@ -58,12 +58,46 @@ version = "1.0.100"
5858 source = "registry+https://github.com/rust-lang/crates.io-index"
5959 checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
6060
61+[[package]]
62+name = "atomic-waker"
63+version = "1.1.2"
64+source = "registry+https://github.com/rust-lang/crates.io-index"
65+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
66+
67+[[package]]
68+name = "base64"
69+version = "0.22.1"
70+source = "registry+https://github.com/rust-lang/crates.io-index"
71+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
72+
6173 [[package]]
6274 name = "bitflags"
6375 version = "2.10.0"
6476 source = "registry+https://github.com/rust-lang/crates.io-index"
6577 checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
6678
79+[[package]]
80+name = "bumpalo"
81+version = "3.19.0"
82+source = "registry+https://github.com/rust-lang/crates.io-index"
83+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
84+
85+[[package]]
86+name = "bytes"
87+version = "1.10.1"
88+source = "registry+https://github.com/rust-lang/crates.io-index"
89+checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
90+
91+[[package]]
92+name = "cc"
93+version = "1.2.45"
94+source = "registry+https://github.com/rust-lang/crates.io-index"
95+checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe"
96+dependencies = [
97+ "find-msvc-tools",
98+ "shlex",
99+]
100+
67101 [[package]]
68102 name = "cfg-if"
69103 version = "1.0.4"
@@ -71,270 +105,1313 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
71105 checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
72106
73107 [[package]]
74-name = "clap"
75-version = "4.5.51"
108+name = "cfg_aliases"
109+version = "0.2.1"
110+source = "registry+https://github.com/rust-lang/crates.io-index"
111+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
112+
113+[[package]]
114+name = "clap"
115+version = "4.5.51"
116+source = "registry+https://github.com/rust-lang/crates.io-index"
117+checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5"
118+dependencies = [
119+ "clap_builder",
120+ "clap_derive",
121+]
122+
123+[[package]]
124+name = "clap_builder"
125+version = "4.5.51"
126+source = "registry+https://github.com/rust-lang/crates.io-index"
127+checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a"
128+dependencies = [
129+ "anstream",
130+ "anstyle",
131+ "clap_lex",
132+ "strsim",
133+]
134+
135+[[package]]
136+name = "clap_complete"
137+version = "4.5.60"
138+source = "registry+https://github.com/rust-lang/crates.io-index"
139+checksum = "8e602857739c5a4291dfa33b5a298aeac9006185229a700e5810a3ef7272d971"
140+dependencies = [
141+ "clap",
142+]
143+
144+[[package]]
145+name = "clap_derive"
146+version = "4.5.49"
147+source = "registry+https://github.com/rust-lang/crates.io-index"
148+checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
149+dependencies = [
150+ "heck",
151+ "proc-macro2",
152+ "quote",
153+ "syn",
154+]
155+
156+[[package]]
157+name = "clap_lex"
158+version = "0.7.6"
159+source = "registry+https://github.com/rust-lang/crates.io-index"
160+checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
161+
162+[[package]]
163+name = "colorchoice"
164+version = "1.0.4"
165+source = "registry+https://github.com/rust-lang/crates.io-index"
166+checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
167+
168+[[package]]
169+name = "dirs"
170+version = "5.0.1"
171+source = "registry+https://github.com/rust-lang/crates.io-index"
172+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
173+dependencies = [
174+ "dirs-sys",
175+]
176+
177+[[package]]
178+name = "dirs-sys"
179+version = "0.4.1"
180+source = "registry+https://github.com/rust-lang/crates.io-index"
181+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
182+dependencies = [
183+ "libc",
184+ "option-ext",
185+ "redox_users",
186+ "windows-sys 0.48.0",
187+]
188+
189+[[package]]
190+name = "displaydoc"
191+version = "0.2.5"
192+source = "registry+https://github.com/rust-lang/crates.io-index"
193+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
194+dependencies = [
195+ "proc-macro2",
196+ "quote",
197+ "syn",
198+]
199+
200+[[package]]
201+name = "dotman"
202+version = "0.1.0"
203+dependencies = [
204+ "anyhow",
205+ "clap",
206+ "clap_complete",
207+ "dirs",
208+ "reqwest",
209+ "serde",
210+ "serde_json",
211+ "serde_yaml",
212+ "url",
213+ "which",
214+]
215+
216+[[package]]
217+name = "either"
218+version = "1.15.0"
219+source = "registry+https://github.com/rust-lang/crates.io-index"
220+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
221+
222+[[package]]
223+name = "equivalent"
224+version = "1.0.2"
225+source = "registry+https://github.com/rust-lang/crates.io-index"
226+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
227+
228+[[package]]
229+name = "errno"
230+version = "0.3.14"
231+source = "registry+https://github.com/rust-lang/crates.io-index"
232+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
233+dependencies = [
234+ "libc",
235+ "windows-sys 0.61.2",
236+]
237+
238+[[package]]
239+name = "find-msvc-tools"
240+version = "0.1.4"
241+source = "registry+https://github.com/rust-lang/crates.io-index"
242+checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127"
243+
244+[[package]]
245+name = "fnv"
246+version = "1.0.7"
247+source = "registry+https://github.com/rust-lang/crates.io-index"
248+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
249+
250+[[package]]
251+name = "form_urlencoded"
252+version = "1.2.2"
253+source = "registry+https://github.com/rust-lang/crates.io-index"
254+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
255+dependencies = [
256+ "percent-encoding",
257+]
258+
259+[[package]]
260+name = "futures-channel"
261+version = "0.3.31"
262+source = "registry+https://github.com/rust-lang/crates.io-index"
263+checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
264+dependencies = [
265+ "futures-core",
266+ "futures-sink",
267+]
268+
269+[[package]]
270+name = "futures-core"
271+version = "0.3.31"
272+source = "registry+https://github.com/rust-lang/crates.io-index"
273+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
274+
275+[[package]]
276+name = "futures-io"
277+version = "0.3.31"
278+source = "registry+https://github.com/rust-lang/crates.io-index"
279+checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
280+
281+[[package]]
282+name = "futures-sink"
283+version = "0.3.31"
284+source = "registry+https://github.com/rust-lang/crates.io-index"
285+checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
286+
287+[[package]]
288+name = "futures-task"
289+version = "0.3.31"
290+source = "registry+https://github.com/rust-lang/crates.io-index"
291+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
292+
293+[[package]]
294+name = "futures-util"
295+version = "0.3.31"
296+source = "registry+https://github.com/rust-lang/crates.io-index"
297+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
298+dependencies = [
299+ "futures-core",
300+ "futures-io",
301+ "futures-sink",
302+ "futures-task",
303+ "memchr",
304+ "pin-project-lite",
305+ "pin-utils",
306+ "slab",
307+]
308+
309+[[package]]
310+name = "getrandom"
311+version = "0.2.16"
312+source = "registry+https://github.com/rust-lang/crates.io-index"
313+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
314+dependencies = [
315+ "cfg-if",
316+ "js-sys",
317+ "libc",
318+ "wasi",
319+ "wasm-bindgen",
320+]
321+
322+[[package]]
323+name = "getrandom"
324+version = "0.3.4"
325+source = "registry+https://github.com/rust-lang/crates.io-index"
326+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
327+dependencies = [
328+ "cfg-if",
329+ "js-sys",
330+ "libc",
331+ "r-efi",
332+ "wasip2",
333+ "wasm-bindgen",
334+]
335+
336+[[package]]
337+name = "hashbrown"
338+version = "0.16.0"
339+source = "registry+https://github.com/rust-lang/crates.io-index"
340+checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
341+
342+[[package]]
343+name = "heck"
344+version = "0.5.0"
345+source = "registry+https://github.com/rust-lang/crates.io-index"
346+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
347+
348+[[package]]
349+name = "home"
350+version = "0.5.12"
351+source = "registry+https://github.com/rust-lang/crates.io-index"
352+checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
353+dependencies = [
354+ "windows-sys 0.61.2",
355+]
356+
357+[[package]]
358+name = "http"
359+version = "1.3.1"
360+source = "registry+https://github.com/rust-lang/crates.io-index"
361+checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
362+dependencies = [
363+ "bytes",
364+ "fnv",
365+ "itoa",
366+]
367+
368+[[package]]
369+name = "http-body"
370+version = "1.0.1"
371+source = "registry+https://github.com/rust-lang/crates.io-index"
372+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
373+dependencies = [
374+ "bytes",
375+ "http",
376+]
377+
378+[[package]]
379+name = "http-body-util"
380+version = "0.1.3"
381+source = "registry+https://github.com/rust-lang/crates.io-index"
382+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
383+dependencies = [
384+ "bytes",
385+ "futures-core",
386+ "http",
387+ "http-body",
388+ "pin-project-lite",
389+]
390+
391+[[package]]
392+name = "httparse"
393+version = "1.10.1"
394+source = "registry+https://github.com/rust-lang/crates.io-index"
395+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
396+
397+[[package]]
398+name = "hyper"
399+version = "1.7.0"
400+source = "registry+https://github.com/rust-lang/crates.io-index"
401+checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
402+dependencies = [
403+ "atomic-waker",
404+ "bytes",
405+ "futures-channel",
406+ "futures-core",
407+ "http",
408+ "http-body",
409+ "httparse",
410+ "itoa",
411+ "pin-project-lite",
412+ "pin-utils",
413+ "smallvec",
414+ "tokio",
415+ "want",
416+]
417+
418+[[package]]
419+name = "hyper-rustls"
420+version = "0.27.7"
421+source = "registry+https://github.com/rust-lang/crates.io-index"
422+checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
423+dependencies = [
424+ "http",
425+ "hyper",
426+ "hyper-util",
427+ "rustls",
428+ "rustls-pki-types",
429+ "tokio",
430+ "tokio-rustls",
431+ "tower-service",
432+ "webpki-roots",
433+]
434+
435+[[package]]
436+name = "hyper-util"
437+version = "0.1.17"
438+source = "registry+https://github.com/rust-lang/crates.io-index"
439+checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
440+dependencies = [
441+ "base64",
442+ "bytes",
443+ "futures-channel",
444+ "futures-core",
445+ "futures-util",
446+ "http",
447+ "http-body",
448+ "hyper",
449+ "ipnet",
450+ "libc",
451+ "percent-encoding",
452+ "pin-project-lite",
453+ "socket2",
454+ "tokio",
455+ "tower-service",
456+ "tracing",
457+]
458+
459+[[package]]
460+name = "icu_collections"
461+version = "2.1.1"
462+source = "registry+https://github.com/rust-lang/crates.io-index"
463+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
464+dependencies = [
465+ "displaydoc",
466+ "potential_utf",
467+ "yoke",
468+ "zerofrom",
469+ "zerovec",
470+]
471+
472+[[package]]
473+name = "icu_locale_core"
474+version = "2.1.1"
475+source = "registry+https://github.com/rust-lang/crates.io-index"
476+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
477+dependencies = [
478+ "displaydoc",
479+ "litemap",
480+ "tinystr",
481+ "writeable",
482+ "zerovec",
483+]
484+
485+[[package]]
486+name = "icu_normalizer"
487+version = "2.1.1"
488+source = "registry+https://github.com/rust-lang/crates.io-index"
489+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
490+dependencies = [
491+ "icu_collections",
492+ "icu_normalizer_data",
493+ "icu_properties",
494+ "icu_provider",
495+ "smallvec",
496+ "zerovec",
497+]
498+
499+[[package]]
500+name = "icu_normalizer_data"
501+version = "2.1.1"
502+source = "registry+https://github.com/rust-lang/crates.io-index"
503+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
504+
505+[[package]]
506+name = "icu_properties"
507+version = "2.1.1"
508+source = "registry+https://github.com/rust-lang/crates.io-index"
509+checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99"
510+dependencies = [
511+ "icu_collections",
512+ "icu_locale_core",
513+ "icu_properties_data",
514+ "icu_provider",
515+ "zerotrie",
516+ "zerovec",
517+]
518+
519+[[package]]
520+name = "icu_properties_data"
521+version = "2.1.1"
522+source = "registry+https://github.com/rust-lang/crates.io-index"
523+checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899"
524+
525+[[package]]
526+name = "icu_provider"
527+version = "2.1.1"
528+source = "registry+https://github.com/rust-lang/crates.io-index"
529+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
530+dependencies = [
531+ "displaydoc",
532+ "icu_locale_core",
533+ "writeable",
534+ "yoke",
535+ "zerofrom",
536+ "zerotrie",
537+ "zerovec",
538+]
539+
540+[[package]]
541+name = "idna"
542+version = "1.1.0"
543+source = "registry+https://github.com/rust-lang/crates.io-index"
544+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
545+dependencies = [
546+ "idna_adapter",
547+ "smallvec",
548+ "utf8_iter",
549+]
550+
551+[[package]]
552+name = "idna_adapter"
553+version = "1.2.1"
554+source = "registry+https://github.com/rust-lang/crates.io-index"
555+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
556+dependencies = [
557+ "icu_normalizer",
558+ "icu_properties",
559+]
560+
561+[[package]]
562+name = "indexmap"
563+version = "2.12.0"
564+source = "registry+https://github.com/rust-lang/crates.io-index"
565+checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
566+dependencies = [
567+ "equivalent",
568+ "hashbrown",
569+]
570+
571+[[package]]
572+name = "ipnet"
573+version = "2.11.0"
574+source = "registry+https://github.com/rust-lang/crates.io-index"
575+checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
576+
577+[[package]]
578+name = "iri-string"
579+version = "0.7.9"
580+source = "registry+https://github.com/rust-lang/crates.io-index"
581+checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
582+dependencies = [
583+ "memchr",
584+ "serde",
585+]
586+
587+[[package]]
588+name = "is_terminal_polyfill"
589+version = "1.70.2"
590+source = "registry+https://github.com/rust-lang/crates.io-index"
591+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
592+
593+[[package]]
594+name = "itoa"
595+version = "1.0.15"
596+source = "registry+https://github.com/rust-lang/crates.io-index"
597+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
598+
599+[[package]]
600+name = "js-sys"
601+version = "0.3.82"
602+source = "registry+https://github.com/rust-lang/crates.io-index"
603+checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
604+dependencies = [
605+ "once_cell",
606+ "wasm-bindgen",
607+]
608+
609+[[package]]
610+name = "libc"
611+version = "0.2.177"
612+source = "registry+https://github.com/rust-lang/crates.io-index"
613+checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
614+
615+[[package]]
616+name = "libredox"
617+version = "0.1.10"
618+source = "registry+https://github.com/rust-lang/crates.io-index"
619+checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
620+dependencies = [
621+ "bitflags",
622+ "libc",
623+]
624+
625+[[package]]
626+name = "linux-raw-sys"
627+version = "0.4.15"
628+source = "registry+https://github.com/rust-lang/crates.io-index"
629+checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
630+
631+[[package]]
632+name = "litemap"
633+version = "0.8.1"
634+source = "registry+https://github.com/rust-lang/crates.io-index"
635+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
636+
637+[[package]]
638+name = "log"
639+version = "0.4.28"
640+source = "registry+https://github.com/rust-lang/crates.io-index"
641+checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
642+
643+[[package]]
644+name = "lru-slab"
645+version = "0.1.2"
646+source = "registry+https://github.com/rust-lang/crates.io-index"
647+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
648+
649+[[package]]
650+name = "memchr"
651+version = "2.7.6"
652+source = "registry+https://github.com/rust-lang/crates.io-index"
653+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
654+
655+[[package]]
656+name = "mio"
657+version = "1.1.0"
658+source = "registry+https://github.com/rust-lang/crates.io-index"
659+checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
660+dependencies = [
661+ "libc",
662+ "wasi",
663+ "windows-sys 0.61.2",
664+]
665+
666+[[package]]
667+name = "once_cell"
668+version = "1.21.3"
669+source = "registry+https://github.com/rust-lang/crates.io-index"
670+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
671+
672+[[package]]
673+name = "once_cell_polyfill"
674+version = "1.70.2"
675+source = "registry+https://github.com/rust-lang/crates.io-index"
676+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
677+
678+[[package]]
679+name = "option-ext"
680+version = "0.2.0"
681+source = "registry+https://github.com/rust-lang/crates.io-index"
682+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
683+
684+[[package]]
685+name = "percent-encoding"
686+version = "2.3.2"
687+source = "registry+https://github.com/rust-lang/crates.io-index"
688+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
689+
690+[[package]]
691+name = "pin-project-lite"
692+version = "0.2.16"
693+source = "registry+https://github.com/rust-lang/crates.io-index"
694+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
695+
696+[[package]]
697+name = "pin-utils"
698+version = "0.1.0"
699+source = "registry+https://github.com/rust-lang/crates.io-index"
700+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
701+
702+[[package]]
703+name = "potential_utf"
704+version = "0.1.4"
705+source = "registry+https://github.com/rust-lang/crates.io-index"
706+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
707+dependencies = [
708+ "zerovec",
709+]
710+
711+[[package]]
712+name = "ppv-lite86"
713+version = "0.2.21"
714+source = "registry+https://github.com/rust-lang/crates.io-index"
715+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
716+dependencies = [
717+ "zerocopy",
718+]
719+
720+[[package]]
721+name = "proc-macro2"
722+version = "1.0.103"
723+source = "registry+https://github.com/rust-lang/crates.io-index"
724+checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
725+dependencies = [
726+ "unicode-ident",
727+]
728+
729+[[package]]
730+name = "quinn"
731+version = "0.11.9"
732+source = "registry+https://github.com/rust-lang/crates.io-index"
733+checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
734+dependencies = [
735+ "bytes",
736+ "cfg_aliases",
737+ "pin-project-lite",
738+ "quinn-proto",
739+ "quinn-udp",
740+ "rustc-hash",
741+ "rustls",
742+ "socket2",
743+ "thiserror 2.0.17",
744+ "tokio",
745+ "tracing",
746+ "web-time",
747+]
748+
749+[[package]]
750+name = "quinn-proto"
751+version = "0.11.13"
752+source = "registry+https://github.com/rust-lang/crates.io-index"
753+checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
754+dependencies = [
755+ "bytes",
756+ "getrandom 0.3.4",
757+ "lru-slab",
758+ "rand",
759+ "ring",
760+ "rustc-hash",
761+ "rustls",
762+ "rustls-pki-types",
763+ "slab",
764+ "thiserror 2.0.17",
765+ "tinyvec",
766+ "tracing",
767+ "web-time",
768+]
769+
770+[[package]]
771+name = "quinn-udp"
772+version = "0.5.14"
773+source = "registry+https://github.com/rust-lang/crates.io-index"
774+checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
775+dependencies = [
776+ "cfg_aliases",
777+ "libc",
778+ "once_cell",
779+ "socket2",
780+ "tracing",
781+ "windows-sys 0.60.2",
782+]
783+
784+[[package]]
785+name = "quote"
786+version = "1.0.42"
787+source = "registry+https://github.com/rust-lang/crates.io-index"
788+checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
789+dependencies = [
790+ "proc-macro2",
791+]
792+
793+[[package]]
794+name = "r-efi"
795+version = "5.3.0"
796+source = "registry+https://github.com/rust-lang/crates.io-index"
797+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
798+
799+[[package]]
800+name = "rand"
801+version = "0.9.2"
802+source = "registry+https://github.com/rust-lang/crates.io-index"
803+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
804+dependencies = [
805+ "rand_chacha",
806+ "rand_core",
807+]
808+
809+[[package]]
810+name = "rand_chacha"
811+version = "0.9.0"
812+source = "registry+https://github.com/rust-lang/crates.io-index"
813+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
814+dependencies = [
815+ "ppv-lite86",
816+ "rand_core",
817+]
818+
819+[[package]]
820+name = "rand_core"
821+version = "0.9.3"
822+source = "registry+https://github.com/rust-lang/crates.io-index"
823+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
824+dependencies = [
825+ "getrandom 0.3.4",
826+]
827+
828+[[package]]
829+name = "redox_users"
830+version = "0.4.6"
831+source = "registry+https://github.com/rust-lang/crates.io-index"
832+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
833+dependencies = [
834+ "getrandom 0.2.16",
835+ "libredox",
836+ "thiserror 1.0.69",
837+]
838+
839+[[package]]
840+name = "reqwest"
841+version = "0.12.24"
842+source = "registry+https://github.com/rust-lang/crates.io-index"
843+checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f"
844+dependencies = [
845+ "base64",
846+ "bytes",
847+ "futures-channel",
848+ "futures-core",
849+ "futures-util",
850+ "http",
851+ "http-body",
852+ "http-body-util",
853+ "hyper",
854+ "hyper-rustls",
855+ "hyper-util",
856+ "js-sys",
857+ "log",
858+ "percent-encoding",
859+ "pin-project-lite",
860+ "quinn",
861+ "rustls",
862+ "rustls-pki-types",
863+ "serde",
864+ "serde_json",
865+ "serde_urlencoded",
866+ "sync_wrapper",
867+ "tokio",
868+ "tokio-rustls",
869+ "tower",
870+ "tower-http",
871+ "tower-service",
872+ "url",
873+ "wasm-bindgen",
874+ "wasm-bindgen-futures",
875+ "web-sys",
876+ "webpki-roots",
877+]
878+
879+[[package]]
880+name = "ring"
881+version = "0.17.14"
882+source = "registry+https://github.com/rust-lang/crates.io-index"
883+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
884+dependencies = [
885+ "cc",
886+ "cfg-if",
887+ "getrandom 0.2.16",
888+ "libc",
889+ "untrusted",
890+ "windows-sys 0.52.0",
891+]
892+
893+[[package]]
894+name = "rustc-hash"
895+version = "2.1.1"
896+source = "registry+https://github.com/rust-lang/crates.io-index"
897+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
898+
899+[[package]]
900+name = "rustix"
901+version = "0.38.44"
902+source = "registry+https://github.com/rust-lang/crates.io-index"
903+checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
904+dependencies = [
905+ "bitflags",
906+ "errno",
907+ "libc",
908+ "linux-raw-sys",
909+ "windows-sys 0.59.0",
910+]
911+
912+[[package]]
913+name = "rustls"
914+version = "0.23.35"
915+source = "registry+https://github.com/rust-lang/crates.io-index"
916+checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f"
917+dependencies = [
918+ "once_cell",
919+ "ring",
920+ "rustls-pki-types",
921+ "rustls-webpki",
922+ "subtle",
923+ "zeroize",
924+]
925+
926+[[package]]
927+name = "rustls-pki-types"
928+version = "1.13.0"
929+source = "registry+https://github.com/rust-lang/crates.io-index"
930+checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a"
931+dependencies = [
932+ "web-time",
933+ "zeroize",
934+]
935+
936+[[package]]
937+name = "rustls-webpki"
938+version = "0.103.8"
939+source = "registry+https://github.com/rust-lang/crates.io-index"
940+checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52"
941+dependencies = [
942+ "ring",
943+ "rustls-pki-types",
944+ "untrusted",
945+]
946+
947+[[package]]
948+name = "rustversion"
949+version = "1.0.22"
950+source = "registry+https://github.com/rust-lang/crates.io-index"
951+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
952+
953+[[package]]
954+name = "ryu"
955+version = "1.0.20"
956+source = "registry+https://github.com/rust-lang/crates.io-index"
957+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
958+
959+[[package]]
960+name = "serde"
961+version = "1.0.228"
962+source = "registry+https://github.com/rust-lang/crates.io-index"
963+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
964+dependencies = [
965+ "serde_core",
966+ "serde_derive",
967+]
968+
969+[[package]]
970+name = "serde_core"
971+version = "1.0.228"
972+source = "registry+https://github.com/rust-lang/crates.io-index"
973+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
974+dependencies = [
975+ "serde_derive",
976+]
977+
978+[[package]]
979+name = "serde_derive"
980+version = "1.0.228"
981+source = "registry+https://github.com/rust-lang/crates.io-index"
982+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
983+dependencies = [
984+ "proc-macro2",
985+ "quote",
986+ "syn",
987+]
988+
989+[[package]]
990+name = "serde_json"
991+version = "1.0.145"
992+source = "registry+https://github.com/rust-lang/crates.io-index"
993+checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
994+dependencies = [
995+ "itoa",
996+ "memchr",
997+ "ryu",
998+ "serde",
999+ "serde_core",
1000+]
1001+
1002+[[package]]
1003+name = "serde_urlencoded"
1004+version = "0.7.1"
1005+source = "registry+https://github.com/rust-lang/crates.io-index"
1006+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
1007+dependencies = [
1008+ "form_urlencoded",
1009+ "itoa",
1010+ "ryu",
1011+ "serde",
1012+]
1013+
1014+[[package]]
1015+name = "serde_yaml"
1016+version = "0.9.34+deprecated"
1017+source = "registry+https://github.com/rust-lang/crates.io-index"
1018+checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
1019+dependencies = [
1020+ "indexmap",
1021+ "itoa",
1022+ "ryu",
1023+ "serde",
1024+ "unsafe-libyaml",
1025+]
1026+
1027+[[package]]
1028+name = "shlex"
1029+version = "1.3.0"
1030+source = "registry+https://github.com/rust-lang/crates.io-index"
1031+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
1032+
1033+[[package]]
1034+name = "slab"
1035+version = "0.4.11"
1036+source = "registry+https://github.com/rust-lang/crates.io-index"
1037+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
1038+
1039+[[package]]
1040+name = "smallvec"
1041+version = "1.15.1"
1042+source = "registry+https://github.com/rust-lang/crates.io-index"
1043+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
1044+
1045+[[package]]
1046+name = "socket2"
1047+version = "0.6.1"
1048+source = "registry+https://github.com/rust-lang/crates.io-index"
1049+checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
1050+dependencies = [
1051+ "libc",
1052+ "windows-sys 0.60.2",
1053+]
1054+
1055+[[package]]
1056+name = "stable_deref_trait"
1057+version = "1.2.1"
1058+source = "registry+https://github.com/rust-lang/crates.io-index"
1059+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
1060+
1061+[[package]]
1062+name = "strsim"
1063+version = "0.11.1"
1064+source = "registry+https://github.com/rust-lang/crates.io-index"
1065+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1066+
1067+[[package]]
1068+name = "subtle"
1069+version = "2.6.1"
1070+source = "registry+https://github.com/rust-lang/crates.io-index"
1071+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
1072+
1073+[[package]]
1074+name = "syn"
1075+version = "2.0.109"
1076+source = "registry+https://github.com/rust-lang/crates.io-index"
1077+checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
1078+dependencies = [
1079+ "proc-macro2",
1080+ "quote",
1081+ "unicode-ident",
1082+]
1083+
1084+[[package]]
1085+name = "sync_wrapper"
1086+version = "1.0.2"
1087+source = "registry+https://github.com/rust-lang/crates.io-index"
1088+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
1089+dependencies = [
1090+ "futures-core",
1091+]
1092+
1093+[[package]]
1094+name = "synstructure"
1095+version = "0.13.2"
1096+source = "registry+https://github.com/rust-lang/crates.io-index"
1097+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
1098+dependencies = [
1099+ "proc-macro2",
1100+ "quote",
1101+ "syn",
1102+]
1103+
1104+[[package]]
1105+name = "thiserror"
1106+version = "1.0.69"
1107+source = "registry+https://github.com/rust-lang/crates.io-index"
1108+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1109+dependencies = [
1110+ "thiserror-impl 1.0.69",
1111+]
1112+
1113+[[package]]
1114+name = "thiserror"
1115+version = "2.0.17"
1116+source = "registry+https://github.com/rust-lang/crates.io-index"
1117+checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
1118+dependencies = [
1119+ "thiserror-impl 2.0.17",
1120+]
1121+
1122+[[package]]
1123+name = "thiserror-impl"
1124+version = "1.0.69"
761125 source = "registry+https://github.com/rust-lang/crates.io-index"
77-checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5"
1126+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
781127 dependencies = [
79- "clap_builder",
80- "clap_derive",
1128+ "proc-macro2",
1129+ "quote",
1130+ "syn",
811131 ]
821132
831133 [[package]]
84-name = "clap_builder"
85-version = "4.5.51"
1134+name = "thiserror-impl"
1135+version = "2.0.17"
861136 source = "registry+https://github.com/rust-lang/crates.io-index"
87-checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a"
1137+checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
881138 dependencies = [
89- "anstream",
90- "anstyle",
91- "clap_lex",
92- "strsim",
1139+ "proc-macro2",
1140+ "quote",
1141+ "syn",
931142 ]
941143
951144 [[package]]
96-name = "clap_complete"
97-version = "4.5.60"
1145+name = "tinystr"
1146+version = "0.8.2"
981147 source = "registry+https://github.com/rust-lang/crates.io-index"
99-checksum = "8e602857739c5a4291dfa33b5a298aeac9006185229a700e5810a3ef7272d971"
1148+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
1001149 dependencies = [
101- "clap",
1150+ "displaydoc",
1151+ "zerovec",
1021152 ]
1031153
1041154 [[package]]
105-name = "clap_derive"
106-version = "4.5.49"
1155+name = "tinyvec"
1156+version = "1.10.0"
1071157 source = "registry+https://github.com/rust-lang/crates.io-index"
108-checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
1158+checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
1091159 dependencies = [
110- "heck",
111- "proc-macro2",
112- "quote",
113- "syn",
1160+ "tinyvec_macros",
1141161 ]
1151162
1161163 [[package]]
117-name = "clap_lex"
118-version = "0.7.6"
1164+name = "tinyvec_macros"
1165+version = "0.1.1"
1191166 source = "registry+https://github.com/rust-lang/crates.io-index"
120-checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
1167+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
1211168
1221169 [[package]]
123-name = "colorchoice"
124-version = "1.0.4"
1170+name = "tokio"
1171+version = "1.48.0"
1251172 source = "registry+https://github.com/rust-lang/crates.io-index"
126-checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
1173+checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
1174+dependencies = [
1175+ "bytes",
1176+ "libc",
1177+ "mio",
1178+ "pin-project-lite",
1179+ "socket2",
1180+ "windows-sys 0.61.2",
1181+]
1271182
1281183 [[package]]
129-name = "dirs"
130-version = "5.0.1"
1184+name = "tokio-rustls"
1185+version = "0.26.4"
1311186 source = "registry+https://github.com/rust-lang/crates.io-index"
132-checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
1187+checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
1331188 dependencies = [
134- "dirs-sys",
1189+ "rustls",
1190+ "tokio",
1351191 ]
1361192
1371193 [[package]]
138-name = "dirs-sys"
139-version = "0.4.1"
1194+name = "tower"
1195+version = "0.5.2"
1401196 source = "registry+https://github.com/rust-lang/crates.io-index"
141-checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
1197+checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
1421198 dependencies = [
143- "libc",
144- "option-ext",
145- "redox_users",
146- "windows-sys 0.48.0",
1199+ "futures-core",
1200+ "futures-util",
1201+ "pin-project-lite",
1202+ "sync_wrapper",
1203+ "tokio",
1204+ "tower-layer",
1205+ "tower-service",
1471206 ]
1481207
1491208 [[package]]
150-name = "dotman"
151-version = "0.1.0"
1209+name = "tower-http"
1210+version = "0.6.6"
1211+source = "registry+https://github.com/rust-lang/crates.io-index"
1212+checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
1521213 dependencies = [
153- "anyhow",
154- "clap",
155- "clap_complete",
156- "dirs",
157- "which",
1214+ "bitflags",
1215+ "bytes",
1216+ "futures-util",
1217+ "http",
1218+ "http-body",
1219+ "iri-string",
1220+ "pin-project-lite",
1221+ "tower",
1222+ "tower-layer",
1223+ "tower-service",
1581224 ]
1591225
1601226 [[package]]
161-name = "either"
162-version = "1.15.0"
1227+name = "tower-layer"
1228+version = "0.3.3"
1631229 source = "registry+https://github.com/rust-lang/crates.io-index"
164-checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
1230+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
1651231
1661232 [[package]]
167-name = "errno"
168-version = "0.3.14"
1233+name = "tower-service"
1234+version = "0.3.3"
1691235 source = "registry+https://github.com/rust-lang/crates.io-index"
170-checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1236+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
1237+
1238+[[package]]
1239+name = "tracing"
1240+version = "0.1.41"
1241+source = "registry+https://github.com/rust-lang/crates.io-index"
1242+checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
1711243 dependencies = [
172- "libc",
173- "windows-sys 0.61.2",
1244+ "pin-project-lite",
1245+ "tracing-core",
1741246 ]
1751247
1761248 [[package]]
177-name = "getrandom"
178-version = "0.2.16"
1249+name = "tracing-core"
1250+version = "0.1.34"
1791251 source = "registry+https://github.com/rust-lang/crates.io-index"
180-checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
1252+checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
1811253 dependencies = [
182- "cfg-if",
183- "libc",
184- "wasi",
1254+ "once_cell",
1851255 ]
1861256
1871257 [[package]]
188-name = "heck"
189-version = "0.5.0"
1258+name = "try-lock"
1259+version = "0.2.5"
1901260 source = "registry+https://github.com/rust-lang/crates.io-index"
191-checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
1261+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
1921262
1931263 [[package]]
194-name = "home"
195-version = "0.5.12"
1264+name = "unicode-ident"
1265+version = "1.0.22"
1961266 source = "registry+https://github.com/rust-lang/crates.io-index"
197-checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
198-dependencies = [
199- "windows-sys 0.61.2",
200-]
1267+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
2011268
2021269 [[package]]
203-name = "is_terminal_polyfill"
204-version = "1.70.2"
1270+name = "unsafe-libyaml"
1271+version = "0.2.11"
2051272 source = "registry+https://github.com/rust-lang/crates.io-index"
206-checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
1273+checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
2071274
2081275 [[package]]
209-name = "libc"
210-version = "0.2.177"
1276+name = "untrusted"
1277+version = "0.9.0"
2111278 source = "registry+https://github.com/rust-lang/crates.io-index"
212-checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
1279+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
2131280
2141281 [[package]]
215-name = "libredox"
216-version = "0.1.10"
1282+name = "url"
1283+version = "2.5.7"
2171284 source = "registry+https://github.com/rust-lang/crates.io-index"
218-checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb"
1285+checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
2191286 dependencies = [
220- "bitflags",
221- "libc",
1287+ "form_urlencoded",
1288+ "idna",
1289+ "percent-encoding",
1290+ "serde",
2221291 ]
2231292
2241293 [[package]]
225-name = "linux-raw-sys"
226-version = "0.4.15"
1294+name = "utf8_iter"
1295+version = "1.0.4"
2271296 source = "registry+https://github.com/rust-lang/crates.io-index"
228-checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
1297+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
2291298
2301299 [[package]]
231-name = "once_cell_polyfill"
232-version = "1.70.2"
1300+name = "utf8parse"
1301+version = "0.2.2"
2331302 source = "registry+https://github.com/rust-lang/crates.io-index"
234-checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
1303+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
2351304
2361305 [[package]]
237-name = "option-ext"
238-version = "0.2.0"
1306+name = "want"
1307+version = "0.3.1"
2391308 source = "registry+https://github.com/rust-lang/crates.io-index"
240-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
1309+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
1310+dependencies = [
1311+ "try-lock",
1312+]
2411313
2421314 [[package]]
243-name = "proc-macro2"
244-version = "1.0.103"
1315+name = "wasi"
1316+version = "0.11.1+wasi-snapshot-preview1"
2451317 source = "registry+https://github.com/rust-lang/crates.io-index"
246-checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
247-dependencies = [
248- "unicode-ident",
249-]
1318+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
2501319
2511320 [[package]]
252-name = "quote"
253-version = "1.0.42"
1321+name = "wasip2"
1322+version = "1.0.1+wasi-0.2.4"
2541323 source = "registry+https://github.com/rust-lang/crates.io-index"
255-checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
1324+checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
2561325 dependencies = [
257- "proc-macro2",
1326+ "wit-bindgen",
2581327 ]
2591328
2601329 [[package]]
261-name = "redox_users"
262-version = "0.4.6"
1330+name = "wasm-bindgen"
1331+version = "0.2.105"
2631332 source = "registry+https://github.com/rust-lang/crates.io-index"
264-checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
1333+checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
2651334 dependencies = [
266- "getrandom",
267- "libredox",
268- "thiserror",
1335+ "cfg-if",
1336+ "once_cell",
1337+ "rustversion",
1338+ "wasm-bindgen-macro",
1339+ "wasm-bindgen-shared",
2691340 ]
2701341
2711342 [[package]]
272-name = "rustix"
273-version = "0.38.44"
1343+name = "wasm-bindgen-futures"
1344+version = "0.4.55"
2741345 source = "registry+https://github.com/rust-lang/crates.io-index"
275-checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
1346+checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
2761347 dependencies = [
277- "bitflags",
278- "errno",
279- "libc",
280- "linux-raw-sys",
281- "windows-sys 0.59.0",
1348+ "cfg-if",
1349+ "js-sys",
1350+ "once_cell",
1351+ "wasm-bindgen",
1352+ "web-sys",
2821353 ]
2831354
2841355 [[package]]
285-name = "strsim"
286-version = "0.11.1"
1356+name = "wasm-bindgen-macro"
1357+version = "0.2.105"
2871358 source = "registry+https://github.com/rust-lang/crates.io-index"
288-checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
1359+checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
1360+dependencies = [
1361+ "quote",
1362+ "wasm-bindgen-macro-support",
1363+]
2891364
2901365 [[package]]
291-name = "syn"
292-version = "2.0.109"
1366+name = "wasm-bindgen-macro-support"
1367+version = "0.2.105"
2931368 source = "registry+https://github.com/rust-lang/crates.io-index"
294-checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f"
1369+checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
2951370 dependencies = [
1371+ "bumpalo",
2961372 "proc-macro2",
2971373 "quote",
298- "unicode-ident",
1374+ "syn",
1375+ "wasm-bindgen-shared",
2991376 ]
3001377
3011378 [[package]]
302-name = "thiserror"
303-version = "1.0.69"
1379+name = "wasm-bindgen-shared"
1380+version = "0.2.105"
3041381 source = "registry+https://github.com/rust-lang/crates.io-index"
305-checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
1382+checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
3061383 dependencies = [
307- "thiserror-impl",
1384+ "unicode-ident",
3081385 ]
3091386
3101387 [[package]]
311-name = "thiserror-impl"
312-version = "1.0.69"
1388+name = "web-sys"
1389+version = "0.3.82"
3131390 source = "registry+https://github.com/rust-lang/crates.io-index"
314-checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
1391+checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
3151392 dependencies = [
316- "proc-macro2",
317- "quote",
318- "syn",
1393+ "js-sys",
1394+ "wasm-bindgen",
3191395 ]
3201396
3211397 [[package]]
322-name = "unicode-ident"
323-version = "1.0.22"
324-source = "registry+https://github.com/rust-lang/crates.io-index"
325-checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
326-
327-[[package]]
328-name = "utf8parse"
329-version = "0.2.2"
1398+name = "web-time"
1399+version = "1.1.0"
3301400 source = "registry+https://github.com/rust-lang/crates.io-index"
331-checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1401+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
1402+dependencies = [
1403+ "js-sys",
1404+ "wasm-bindgen",
1405+]
3321406
3331407 [[package]]
334-name = "wasi"
335-version = "0.11.1+wasi-snapshot-preview1"
1408+name = "webpki-roots"
1409+version = "1.0.4"
3361410 source = "registry+https://github.com/rust-lang/crates.io-index"
337-checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1411+checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e"
1412+dependencies = [
1413+ "rustls-pki-types",
1414+]
3381415
3391416 [[package]]
3401417 name = "which"
@@ -363,6 +1440,15 @@ dependencies = [
3631440 "windows-targets 0.48.5",
3641441 ]
3651442
1443+[[package]]
1444+name = "windows-sys"
1445+version = "0.52.0"
1446+source = "registry+https://github.com/rust-lang/crates.io-index"
1447+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
1448+dependencies = [
1449+ "windows-targets 0.52.6",
1450+]
1451+
3661452 [[package]]
3671453 name = "windows-sys"
3681454 version = "0.59.0"
@@ -581,3 +1667,118 @@ name = "winsafe"
5811667 version = "0.0.19"
5821668 source = "registry+https://github.com/rust-lang/crates.io-index"
5831669 checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
1670+
1671+[[package]]
1672+name = "wit-bindgen"
1673+version = "0.46.0"
1674+source = "registry+https://github.com/rust-lang/crates.io-index"
1675+checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
1676+
1677+[[package]]
1678+name = "writeable"
1679+version = "0.6.2"
1680+source = "registry+https://github.com/rust-lang/crates.io-index"
1681+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
1682+
1683+[[package]]
1684+name = "yoke"
1685+version = "0.8.1"
1686+source = "registry+https://github.com/rust-lang/crates.io-index"
1687+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
1688+dependencies = [
1689+ "stable_deref_trait",
1690+ "yoke-derive",
1691+ "zerofrom",
1692+]
1693+
1694+[[package]]
1695+name = "yoke-derive"
1696+version = "0.8.1"
1697+source = "registry+https://github.com/rust-lang/crates.io-index"
1698+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
1699+dependencies = [
1700+ "proc-macro2",
1701+ "quote",
1702+ "syn",
1703+ "synstructure",
1704+]
1705+
1706+[[package]]
1707+name = "zerocopy"
1708+version = "0.8.27"
1709+source = "registry+https://github.com/rust-lang/crates.io-index"
1710+checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
1711+dependencies = [
1712+ "zerocopy-derive",
1713+]
1714+
1715+[[package]]
1716+name = "zerocopy-derive"
1717+version = "0.8.27"
1718+source = "registry+https://github.com/rust-lang/crates.io-index"
1719+checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
1720+dependencies = [
1721+ "proc-macro2",
1722+ "quote",
1723+ "syn",
1724+]
1725+
1726+[[package]]
1727+name = "zerofrom"
1728+version = "0.1.6"
1729+source = "registry+https://github.com/rust-lang/crates.io-index"
1730+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
1731+dependencies = [
1732+ "zerofrom-derive",
1733+]
1734+
1735+[[package]]
1736+name = "zerofrom-derive"
1737+version = "0.1.6"
1738+source = "registry+https://github.com/rust-lang/crates.io-index"
1739+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
1740+dependencies = [
1741+ "proc-macro2",
1742+ "quote",
1743+ "syn",
1744+ "synstructure",
1745+]
1746+
1747+[[package]]
1748+name = "zeroize"
1749+version = "1.8.2"
1750+source = "registry+https://github.com/rust-lang/crates.io-index"
1751+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
1752+
1753+[[package]]
1754+name = "zerotrie"
1755+version = "0.2.3"
1756+source = "registry+https://github.com/rust-lang/crates.io-index"
1757+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
1758+dependencies = [
1759+ "displaydoc",
1760+ "yoke",
1761+ "zerofrom",
1762+]
1763+
1764+[[package]]
1765+name = "zerovec"
1766+version = "0.11.5"
1767+source = "registry+https://github.com/rust-lang/crates.io-index"
1768+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
1769+dependencies = [
1770+ "yoke",
1771+ "zerofrom",
1772+ "zerovec-derive",
1773+]
1774+
1775+[[package]]
1776+name = "zerovec-derive"
1777+version = "0.11.2"
1778+source = "registry+https://github.com/rust-lang/crates.io-index"
1779+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
1780+dependencies = [
1781+ "proc-macro2",
1782+ "quote",
1783+ "syn",
1784+]
+5-0Cargo.toml
@@ -9,3 +9,8 @@ clap = { version = "4.5", features = ["derive"] }
99 clap_complete = "4.5"
1010 dirs = "5"
1111 which = "6"
12+reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "blocking", "json"] }
13+serde = { version = "1.0", features = ["derive"] }
14+serde_yaml = "0.9"
15+serde_json = "1.0"
16+url = "2.5"
+10-0flex.yml
@@ -0,0 +1,10 @@
1+---
2+# Example local fallback for dotman flex
3+# key: dotfile type, value: repo URL or list of URLs
4+nvim:
5+ - https://github.com/hygo-nvim
6+ - https://github.com/LazyVim/LazyVim
7+tmux: https://github.com/gpakosz/.tmux
8+zsh:
9+ - https://github.com/ohmyzsh/ohmyzsh
10+ - https://github.com/sorin-ionescu/prezto
+117-0src/main.rs
@@ -5,8 +5,10 @@ use std::fs;
55 use std::io;
66 use std::path::Path;
77 use std::process::Command;
8+use std::collections::HashMap;
89
910 const DOTMAN_DIR: &str = "/usr/local/share/dotman";
11+const DEFAULT_FLEX_URL: &str = "https://github.com/flex.yml";
1012
1113 #[derive(Parser)]
1214 #[command(name = "dotman", about = "Manage dotfile repos and links", version)]
@@ -28,10 +30,22 @@ enum Commands {
2830 Active,
2931 /// List repositories installed in the dotman store
3032 List,
33+ /// Fetch and list repos from flex.yml (remote), sorted by GitHub stars
34+ Flex(FlexArgs),
3135 /// Generate shell completions to stdout (bash|zsh|fish|powershell|elvish)
3236 Completions { shell: Shell },
3337 }
3438
39+#[derive(Args)]
40+struct FlexArgs {
41+ /// Optional filter: types to include (e.g. nvim, tmux)
42+ #[arg(value_name = "TYPE", num_args = 0.., value_delimiter = ',')]
43+ types: Vec<String>,
44+ /// Optional override URL to YAML (defaults to https://github.com/flex.yml)
45+ #[arg(long)]
46+ url: Option<String>,
47+}
48+
3549 #[derive(Args)]
3650 struct InstallArgs {
3751 /// Git repository URL, e.g. https://github.com/hygo-nvim
@@ -64,6 +78,7 @@ fn main() -> Result<()> {
6478 Commands::Update => cmd_update(),
6579 Commands::Active => cmd_active(),
6680 Commands::List => cmd_list(),
81+ Commands::Flex(args) => cmd_flex(args),
6782 Commands::Completions { shell } => cmd_completions(shell),
6883 }
6984 }
@@ -330,3 +345,105 @@ fn cmd_list() -> Result<()> {
330345 }
331346 Ok(())
332347 }
348+
349+#[derive(Debug, serde::Deserialize)]
350+#[serde(untagged)]
351+enum FlexEntry {
352+ Single(String),
353+ Many(Vec<String>),
354+}
355+
356+fn cmd_flex(args: FlexArgs) -> Result<()> {
357+ let url = args.url.as_deref().unwrap_or(DEFAULT_FLEX_URL);
358+ let yaml = fetch_text(url).or_else(|_| {
359+ // Fallback to local flex.yml if remote fails
360+ fs::read_to_string("flex.yml").context("Failed to fetch and failed to read local flex.yml")
361+ })?;
362+
363+ let map: HashMap<String, FlexEntry> = serde_yaml::from_str(&yaml)
364+ .context("Parsing YAML for flex")?;
365+
366+ let filters: Vec<String> = args.types.iter().map(|s| s.to_lowercase()).collect();
367+
368+ // Flatten entries into (type, url)
369+ let mut items: Vec<(String, String)> = Vec::new();
370+ for (ty, entry) in map.into_iter() {
371+ if !filters.is_empty() && !filters.contains(&ty.to_lowercase()) {
372+ continue;
373+ }
374+ match entry {
375+ FlexEntry::Single(u) => items.push((ty.clone(), u)),
376+ FlexEntry::Many(v) => {
377+ for u in v { items.push((ty.clone(), u)); }
378+ }
379+ }
380+ }
381+
382+ // Collect stars (best-effort)
383+ let mut detailed: Vec<(String, String, u64)> = Vec::with_capacity(items.len());
384+ for (ty, link) in items {
385+ let stars = github_stars(&link).unwrap_or(0);
386+ detailed.push((ty, link, stars));
387+ }
388+
389+ // Sort by stars desc
390+ detailed.sort_by(|a, b| b.2.cmp(&a.2));
391+
392+ for (ty, link, stars) in detailed {
393+ if stars > 0 {
394+ println!("{} | {} ⭐ -> {}", ty, stars, link);
395+ } else {
396+ println!("{} | - -> {}", ty, link);
397+ }
398+ }
399+
400+ Ok(())
401+}
402+
403+fn fetch_text(url: &str) -> Result<String> {
404+ let client = reqwest::blocking::Client::builder()
405+ .user_agent("dotman/0.1")
406+ .build()
407+ .context("building http client")?;
408+ let resp = client.get(url).send().with_context(|| format!("GET {}", url))?;
409+ if !resp.status().is_success() {
410+ bail!("HTTP {} for {}", resp.status(), url);
411+ }
412+ let text = resp.text().context("reading response body")?;
413+ Ok(text)
414+}
415+
416+fn github_stars(link: &str) -> Result<u64> {
417+ // Expect forms like https://github.com/owner/repo or git@github.com:owner/repo.git
418+ let lower = link.to_lowercase();
419+ if !lower.contains("github.com") { bail!("not github"); }
420+
421+ // Try to extract owner/repo
422+ let (owner, repo) = if let Ok(parsed) = url::Url::parse(link) {
423+ if parsed.domain().unwrap_or("") != "github.com" { bail!("not github"); }
424+ let mut segs = parsed.path_segments().ok_or_else(|| anyhow::anyhow!("no path"))?;
425+ let owner = segs.next().ok_or_else(|| anyhow::anyhow!("no owner"))?;
426+ let mut repo = segs.next().ok_or_else(|| anyhow::anyhow!("no repo"))?;
427+ if let Some(stripped) = repo.strip_suffix('.').or_else(|| repo.strip_suffix(".git")) { repo = stripped; }
428+ (owner.to_string(), repo.to_string())
429+ } else if let Some(rest) = lower.strip_prefix("git@github.com:") {
430+ let parts: Vec<&str> = rest.split('/').collect();
431+ if parts.len() < 2 { bail!("not owner/repo"); }
432+ let mut repo = parts[1].to_string();
433+ if let Some(stripped) = repo.strip_suffix('.').or_else(|| repo.strip_suffix(".git")) { repo = stripped.to_string(); }
434+ (parts[0].to_string(), repo)
435+ } else {
436+ bail!("unrecognized github url");
437+ };
438+
439+ let api = format!("https://api.github.com/repos/{}/{}", owner, repo);
440+ let client = reqwest::blocking::Client::builder()
441+ .user_agent("dotman/0.1")
442+ .build()
443+ .context("building http client")?;
444+ let resp = client.get(&api).send().with_context(|| format!("GET {}", api))?;
445+ if !resp.status().is_success() { bail!("bad status") }
446+ let v: serde_json::Value = resp.json().context("parsing github json")?;
447+ let stars = v.get("stargazers_count").and_then(|n| n.as_u64()).unwrap_or(0);
448+ Ok(stars)
449+}