From 6f32525db6f4cb484954e28e946f7136e81276a0 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 10:43:21 +0000 Subject: [PATCH 01/13] cargo: toml & dirs --- Cargo.lock | 1182 ++++++++++++++++++++++------------------------------ Cargo.toml | 26 +- 2 files changed, 521 insertions(+), 687 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4f27ae1dc..195920b80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -35,7 +35,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -252,14 +252,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] name = "bstr" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", "regex-automata", @@ -331,12 +331,12 @@ checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cargo_toml" -version = "0.21.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fbd1fe9db3ebf71b89060adaf7b0504c2d6a425cf061313099547e382c2e472" +checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" dependencies = [ "serde", - "toml 0.8.19", + "toml 0.8.22", ] [[package]] @@ -431,9 +431,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff" dependencies = [ "clap_builder", "clap_derive", @@ -441,9 +441,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489" dependencies = [ "anstream", "anstyle", @@ -454,23 +454,23 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.42" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a7e468e750fa4b6be660e8b5651ad47372e8fb114030b594c2d75d48c5ffd0" +checksum = "c06f5378ea264ad4f82bbc826628b5aad714a75abf6ece087e923010eb937fb6" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -485,15 +485,6 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" -[[package]] -name = "cmake" -version = "0.1.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" -dependencies = [ - "cc", -] - [[package]] name = "color_quant" version = "1.1.0" @@ -605,9 +596,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] @@ -685,7 +676,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -704,6 +695,27 @@ dependencies = [ "crypto-common", ] +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.59.0", +] + [[package]] name = "displaydoc" version = "0.2.5" @@ -712,7 +724,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -822,10 +834,11 @@ dependencies = [ [[package]] name = "faster-hex" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a2b11eda1d40935b26cf18f6833c526845ae8c41e58d09af6adeb6f0269183" +checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73" dependencies = [ + "heapless", "serde", ] @@ -858,12 +871,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", - "libz-ng-sys", + "libz-rs-sys", "miniz_oxide", ] @@ -908,7 +921,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -955,7 +968,19 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -966,50 +991,50 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gix" -version = "0.70.0" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736f14636705f3a56ea52b553e67282519418d9a35bb1e90b3a9637a00296b68" +checksum = "01237e8d3d78581f71642be8b0c2ae8c0b2b5c251c9c5d9ebbea3c1ea280dce8" dependencies = [ - "gix-actor 0.33.2", - "gix-attributes 0.24.0", + "gix-actor", + "gix-attributes", "gix-command", - "gix-commitgraph 0.26.0", + "gix-commitgraph", "gix-config", - "gix-date 0.9.3", + "gix-date", "gix-diff", "gix-dir", - "gix-discover 0.38.0", - "gix-features 0.40.0", + "gix-discover", + "gix-features", "gix-filter", - "gix-fs 0.13.0", - "gix-glob 0.18.0", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", - "gix-ignore 0.13.0", - "gix-index 0.38.0", - "gix-lock 16.0.0", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-ignore", + "gix-index", + "gix-lock", "gix-mailmap", - "gix-object 0.47.0", + "gix-object", "gix-odb", "gix-pack", "gix-path", "gix-pathspec", "gix-protocol", - "gix-ref 0.50.0", + "gix-ref", "gix-refspec", "gix-revision", - "gix-revwalk 0.18.0", + "gix-revwalk", "gix-sec", "gix-shallow", "gix-status", "gix-submodule", - "gix-tempfile 16.0.0", + "gix-tempfile", "gix-trace", - "gix-traverse 0.44.0", + "gix-traverse", "gix-url", "gix-utils", - "gix-validate 0.9.3", - "gix-worktree 0.39.0", + "gix-validate", + "gix-worktree", "once_cell", "smallvec", "thiserror 2.0.9", @@ -1017,26 +1042,12 @@ dependencies = [ [[package]] name = "gix-actor" -version = "0.31.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0e454357e34b833cc3a00b6efbbd3dd4d18b24b9fb0c023876ec2645e8aa3f2" -dependencies = [ - "bstr", - "gix-date 0.8.7", - "gix-utils", - "itoa", - "thiserror 1.0.69", - "winnow", -] - -[[package]] -name = "gix-actor" -version = "0.33.2" +version = "0.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20018a1a6332e065f1fcc8305c1c932c6b8c9985edea2284b3c79dc6fa3ee4b2" +checksum = "6b300e6e4f31f3f6bd2de5e2b0caab192ced00dc0fcd0f7cc56e28c575c8e1ff" dependencies = [ "bstr", - "gix-date 0.9.3", + "gix-date", "gix-utils", "itoa", "thiserror 2.0.9", @@ -1045,29 +1056,12 @@ dependencies = [ [[package]] name = "gix-attributes" -version = "0.22.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebccbf25aa4a973dd352564a9000af69edca90623e8a16dad9cbc03713131311" -dependencies = [ - "bstr", - "gix-glob 0.16.5", - "gix-path", - "gix-quote", - "gix-trace", - "kstring", - "smallvec", - "thiserror 1.0.69", - "unicode-bom", -] - -[[package]] -name = "gix-attributes" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f151000bf662ef5f641eca6102d942ee31ace80f271a3ef642e99776ce6ddb38" +checksum = "e7e26b3ac280ddb25bb6980d34f4a82ee326f78bf2c6d4ea45eef2d940048b8e" dependencies = [ "bstr", - "gix-glob 0.18.0", + "gix-glob", "gix-path", "gix-quote", "gix-trace", @@ -1097,56 +1091,42 @@ dependencies = [ [[package]] name = "gix-command" -version = "0.4.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb410b84d6575db45e62025a9118bdbf4d4b099ce7575a76161e898d9ca98df1" +checksum = "d2f47f3fb4ba33644061e8e0e1030ef2a937d42dc969553118c320a205a9fb28" dependencies = [ "bstr", "gix-path", + "gix-quote", "gix-trace", "shell-words", ] [[package]] name = "gix-commitgraph" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133b06f67f565836ec0c473e2116a60fb74f80b6435e21d88013ac0e3c60fc78" -dependencies = [ - "bstr", - "gix-chunk", - "gix-features 0.38.2", - "gix-hash 0.14.2", - "memmap2", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-commitgraph" -version = "0.26.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e23a8ec2d8a16026a10dafdb6ed51bcfd08f5d97f20fa52e200bc50cb72e4877" +checksum = "e05050fd6caa6c731fe3bd7f9485b3b520be062d3d139cb2626e052d6c127951" dependencies = [ "bstr", "gix-chunk", - "gix-features 0.40.0", - "gix-hash 0.16.0", + "gix-hash", "memmap2", "thiserror 2.0.9", ] [[package]] name = "gix-config" -version = "0.43.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "377c1efd2014d5d469e0b3cd2952c8097bce9828f634e04d5665383249f1d9e9" +checksum = "48f3c8f357ae049bfb77493c2ec9010f58cfc924ae485e1116c3718fc0f0d881" dependencies = [ "bstr", "gix-config-value", - "gix-features 0.40.0", - "gix-glob 0.18.0", + "gix-features", + "gix-glob", "gix-path", - "gix-ref 0.50.0", + "gix-ref", "gix-sec", "memchr", "once_cell", @@ -1158,9 +1138,9 @@ dependencies = [ [[package]] name = "gix-config-value" -version = "0.14.11" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11365144ef93082f3403471dbaa94cfe4b5e72743bdb9560719a251d439f4cee" +checksum = "439d62e241dae2dffd55bfeeabe551275cf9d9f084c5ebc6b48bad49d03285b7" dependencies = [ "bitflags 2.6.0", "bstr", @@ -1171,152 +1151,109 @@ dependencies = [ [[package]] name = "gix-date" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eed6931f21491ee0aeb922751bd7ec97b4b2fe8fbfedcb678e2a2dce5f3b8c0" -dependencies = [ - "bstr", - "itoa", - "thiserror 1.0.69", - "time", -] - -[[package]] -name = "gix-date" -version = "0.9.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c57c477b645ee248b173bb1176b52dd528872f12c50375801a58aaf5ae91113f" +checksum = "3a98593f1f1e14b9fa15c5b921b2c465e904d698b9463e21bb377be8376c3c1a" dependencies = [ "bstr", "itoa", "jiff", + "smallvec", "thiserror 2.0.9", ] [[package]] name = "gix-diff" -version = "0.50.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62afb7f4ca0acdf4e9dad92065b2eb1bf2993bcc5014b57bc796e3a365b17c4d" +checksum = "5e9b43e95fe352da82a969f0c84ff860c2de3e724d93f6681fedbcd6c917f252" dependencies = [ "bstr", - "gix-attributes 0.24.0", + "gix-attributes", "gix-command", "gix-filter", - "gix-fs 0.13.0", - "gix-hash 0.16.0", - "gix-index 0.38.0", - "gix-object 0.47.0", + "gix-fs", + "gix-hash", + "gix-index", + "gix-object", "gix-path", "gix-pathspec", - "gix-tempfile 16.0.0", + "gix-tempfile", "gix-trace", - "gix-traverse 0.44.0", - "gix-worktree 0.39.0", + "gix-traverse", + "gix-worktree", "imara-diff", "thiserror 2.0.9", ] [[package]] name = "gix-dir" -version = "0.12.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1d78db3927a12f7d1b788047b84efacaab03ef25738bd1c77856ad8966bd57b" +checksum = "01e6e2dc5b8917142d0ffe272209d1671e45b771e433f90186bc71c016792e87" dependencies = [ "bstr", - "gix-discover 0.38.0", - "gix-fs 0.13.0", - "gix-ignore 0.13.0", - "gix-index 0.38.0", - "gix-object 0.47.0", + "gix-discover", + "gix-fs", + "gix-ignore", + "gix-index", + "gix-object", "gix-path", "gix-pathspec", "gix-trace", "gix-utils", - "gix-worktree 0.39.0", + "gix-worktree", "thiserror 2.0.9", ] [[package]] name = "gix-discover" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc27c699b63da66b50d50c00668bc0b7e90c3a382ef302865e891559935f3dbf" -dependencies = [ - "bstr", - "dunce", - "gix-fs 0.11.3", - "gix-hash 0.14.2", - "gix-path", - "gix-ref 0.44.1", - "gix-sec", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-discover" -version = "0.38.0" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c2414bdf04064e0f5a5aa029dfda1e663cf9a6c4bfc8759f2d369299bb65d8" +checksum = "dccfe3e25b4ea46083916c56db3ba9d1e6ef6dce54da485f0463f9fc0fe1837c" dependencies = [ "bstr", "dunce", - "gix-fs 0.13.0", - "gix-hash 0.16.0", + "gix-fs", + "gix-hash", "gix-path", - "gix-ref 0.50.0", + "gix-ref", "gix-sec", "thiserror 2.0.9", ] [[package]] name = "gix-features" -version = "0.38.2" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac7045ac9fe5f9c727f38799d002a7ed3583cd777e3322a7c4b43e3cf437dc69" -dependencies = [ - "gix-hash 0.14.2", - "gix-trace", - "gix-utils", - "libc", - "prodash 28.0.0", - "sha1_smol", - "walkdir", -] - -[[package]] -name = "gix-features" -version = "0.40.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bfdd4838a8d42bd482c9f0cb526411d003ee94cc7c7b08afe5007329c71d554" +checksum = "56f4399af6ec4fd9db84dd4cf9656c5c785ab492ab40a7c27ea92b4241923fed" dependencies = [ "crc32fast", "crossbeam-channel", "flate2", - "gix-hash 0.16.0", + "gix-path", "gix-trace", "gix-utils", "libc", "once_cell", "parking_lot", - "prodash 29.0.0", - "sha1_smol", + "prodash", "thiserror 2.0.9", "walkdir", ] [[package]] name = "gix-filter" -version = "0.17.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdcc36cd7dbc63ed0ec3558645886553d1afd3cd09daa5efb9cba9cceb942bbb" +checksum = "f90c21f0d61778f518bbb7c431b00247bf4534b2153c3e85bcf383876c55ca6c" dependencies = [ "bstr", "encoding_rs", - "gix-attributes 0.24.0", + "gix-attributes", "gix-command", - "gix-hash 0.16.0", - "gix-object 0.47.0", + "gix-hash", + "gix-object", "gix-packetline-blocking", "gix-path", "gix-quote", @@ -1328,113 +1265,61 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bfe6249cfea6d0c0e0990d5226a4cb36f030444ba9e35e0639275db8f98575" -dependencies = [ - "fastrand", - "gix-features 0.38.2", - "gix-utils", -] - -[[package]] -name = "gix-fs" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "182e7fa7bfdf44ffb7cfe7451b373cdf1e00870ac9a488a49587a110c562063d" -dependencies = [ - "fastrand", - "gix-features 0.40.0", - "gix-utils", -] - -[[package]] -name = "gix-glob" -version = "0.16.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74908b4bbc0a0a40852737e5d7889f676f081e340d5451a16e5b4c50d592f111" +checksum = "67a0637149b4ef24d3ea55f81f77231401c8463fae6da27331c987957eb597c7" dependencies = [ - "bitflags 2.6.0", "bstr", - "gix-features 0.38.2", + "fastrand", + "gix-features", "gix-path", + "gix-utils", + "thiserror 2.0.9", ] [[package]] name = "gix-glob" -version = "0.18.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9c7249fa0a78f9b363aa58323db71e0a6161fd69860ed6f48dedf0ef3a314e" +checksum = "2926b03666e83b8d01c10cf06e5733521aacbd2d97179a4c9b1fdddabb9e937d" dependencies = [ "bitflags 2.6.0", "bstr", - "gix-features 0.40.0", + "gix-features", "gix-path", ] [[package]] name = "gix-hash" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e" -dependencies = [ - "faster-hex", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-hash" -version = "0.16.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e81c5ec48649b1821b3ed066a44efb95f1a268b35c1d91295e61252539fbe9f8" +checksum = "8d4900562c662852a6b42e2ef03442eccebf24f047d8eab4f23bc12ef0d785d8" dependencies = [ "faster-hex", + "gix-features", + "sha1-checked", "thiserror 2.0.9", ] [[package]] name = "gix-hashtable" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ddf80e16f3c19ac06ce415a38b8591993d3f73aede049cb561becb5b3a8e242" -dependencies = [ - "gix-hash 0.14.2", - "hashbrown 0.14.5", - "parking_lot", -] - -[[package]] -name = "gix-hashtable" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "189130bc372accd02e0520dc5ab1cef318dcc2bc829b76ab8d84bbe90ac212d1" +checksum = "b5b5cb3c308b4144f2612ff64e32130e641279fcf1a84d8d40dad843b4f64904" dependencies = [ - "gix-hash 0.16.0", + "gix-hash", "hashbrown 0.14.5", "parking_lot", ] [[package]] name = "gix-ignore" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e447cd96598460f5906a0f6c75e950a39f98c2705fc755ad2f2020c9e937fab7" -dependencies = [ - "bstr", - "gix-glob 0.16.5", - "gix-path", - "gix-trace", - "unicode-bom", -] - -[[package]] -name = "gix-ignore" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f529dcb80bf9855c0a7c49f0ac588df6d6952d63a63fefc254b9c869d2cdf6f" +checksum = "ae358c3c96660b10abc7da63c06788dfded603e717edbd19e38c6477911b71c8" dependencies = [ "bstr", - "gix-glob 0.18.0", + "gix-glob", "gix-path", "gix-trace", "unicode-bom", @@ -1442,128 +1327,70 @@ dependencies = [ [[package]] name = "gix-index" -version = "0.33.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9a44eb55bd84bb48f8a44980e951968ced21e171b22d115d1cdcef82a7d73f" -dependencies = [ - "bitflags 2.6.0", - "bstr", - "filetime", - "fnv", - "gix-bitmap", - "gix-features 0.38.2", - "gix-fs 0.11.3", - "gix-hash 0.14.2", - "gix-lock 14.0.0", - "gix-object 0.42.3", - "gix-traverse 0.39.2", - "gix-utils", - "gix-validate 0.8.5", - "hashbrown 0.14.5", - "itoa", - "libc", - "memmap2", - "rustix", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-index" -version = "0.38.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd12e3626879369310fffe2ac61acc828613ef656b50c4ea984dd59d7dc85d8" +checksum = "e6d505aea7d7c4267a3153cb90c712a89970b4dd02a2cb3205be322891f530b5" dependencies = [ "bitflags 2.6.0", "bstr", "filetime", "fnv", "gix-bitmap", - "gix-features 0.40.0", - "gix-fs 0.13.0", - "gix-hash 0.16.0", - "gix-lock 16.0.0", - "gix-object 0.47.0", - "gix-traverse 0.44.0", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", "gix-utils", - "gix-validate 0.9.3", + "gix-validate", "hashbrown 0.14.5", "itoa", "libc", "memmap2", - "rustix", + "rustix 1.0.5", "smallvec", "thiserror 2.0.9", ] [[package]] name = "gix-lock" -version = "14.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d" -dependencies = [ - "gix-tempfile 14.0.2", - "gix-utils", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-lock" -version = "16.0.0" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9739815270ff6940968441824d162df9433db19211ca9ba8c3fc1b50b849c642" +checksum = "570f8b034659f256366dc90f1a24924902f20acccd6a15be96d44d1269e7a796" dependencies = [ - "gix-tempfile 16.0.0", + "gix-tempfile", "gix-utils", "thiserror 2.0.9", ] [[package]] name = "gix-mailmap" -version = "0.25.2" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "017996966133afb1e631796d8cf32e43300f8f76233f2a15ce9af5be5069b0a6" +checksum = "5e7c52eb13d84ad26030d07a2c2975ba639dd1400a7996e6966c5aef617ed829" dependencies = [ "bstr", - "gix-actor 0.33.2", - "gix-date 0.9.3", + "gix-actor", + "gix-date", "thiserror 2.0.9", ] [[package]] name = "gix-object" -version = "0.42.3" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25da2f46b4e7c2fa7b413ce4dffb87f69eaf89c2057e386491f4c55cadbfe386" +checksum = "d957ca3640c555d48bb27f8278c67169fa1380ed94f6452c5590742524c40fbb" dependencies = [ "bstr", - "gix-actor 0.31.5", - "gix-date 0.8.7", - "gix-features 0.38.2", - "gix-hash 0.14.2", - "gix-utils", - "gix-validate 0.8.5", - "itoa", - "smallvec", - "thiserror 1.0.69", - "winnow", -] - -[[package]] -name = "gix-object" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc4b3a0044244f0fe22347fb7a79cca165e37829d668b41b85ff46a43e5fd68" -dependencies = [ - "bstr", - "gix-actor 0.33.2", - "gix-date 0.9.3", - "gix-features 0.40.0", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-hashtable", "gix-path", "gix-utils", - "gix-validate 0.9.3", + "gix-validate", "itoa", "smallvec", "thiserror 2.0.9", @@ -1572,17 +1399,17 @@ dependencies = [ [[package]] name = "gix-odb" -version = "0.67.0" +version = "0.69.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e93457df69cd09573608ce9fa4f443fbd84bc8d15d8d83adecd471058459c1b" +checksum = "868f703905fdbcfc1bd750942f82419903ecb7039f5288adb5206d6de405e0c9" dependencies = [ "arc-swap", - "gix-date 0.9.3", - "gix-features 0.40.0", - "gix-fs 0.13.0", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", - "gix-object 0.47.0", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-hashtable", + "gix-object", "gix-pack", "gix-path", "gix-quote", @@ -1593,16 +1420,16 @@ dependencies = [ [[package]] name = "gix-pack" -version = "0.57.0" +version = "0.59.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc13a475b3db735617017fb35f816079bf503765312d4b1913b18cf96f3fa515" +checksum = "9d49c55d69c8449f2a0a5a77eb9cbacfebb6b0e2f1215f0fc23a4cb60528a450" dependencies = [ "clru", "gix-chunk", - "gix-features 0.40.0", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", - "gix-object 0.47.0", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", "gix-path", "memmap2", "smallvec", @@ -1612,9 +1439,9 @@ dependencies = [ [[package]] name = "gix-packetline" -version = "0.18.3" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7e5ae6bc3ac160a6bf44a55f5537813ca3ddb08549c0fd3e7ef699c73c439cd" +checksum = "8ddc034bc67c848e4ef7596ab5528cd8fd439d310858dbe1ce8b324f25deb91c" dependencies = [ "bstr", "faster-hex", @@ -1624,9 +1451,9 @@ dependencies = [ [[package]] name = "gix-packetline-blocking" -version = "0.18.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cbf8767c6abd5a6779f586702b5bcd8702380f4208219449cf1c9d0cd1e17c" +checksum = "c44880f028ba46d6cf37a66d27a300310c6b51b8ed0e44918f93df061168e2f3" dependencies = [ "bstr", "faster-hex", @@ -1636,12 +1463,13 @@ dependencies = [ [[package]] name = "gix-path" -version = "0.10.14" +version = "0.10.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c40f12bb65a8299be0cfb90fe718e3be236b7a94b434877012980863a883a99f" +checksum = "c091d2e887e02c3462f52252c5ea61150270c0f2657b642e8d0d6df56c16e642" dependencies = [ "bstr", "gix-trace", + "gix-validate", "home", "once_cell", "thiserror 2.0.9", @@ -1649,30 +1477,30 @@ dependencies = [ [[package]] name = "gix-pathspec" -version = "0.9.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6430d3a686c08e9d59019806faa78c17315fe22ae73151a452195857ca02f86c" +checksum = "ce061c50e5f8f7c830cacb3da3e999ae935e283ce8522249f0ce2256d110979d" dependencies = [ "bitflags 2.6.0", "bstr", - "gix-attributes 0.24.0", + "gix-attributes", "gix-config-value", - "gix-glob 0.18.0", + "gix-glob", "gix-path", "thiserror 2.0.9", ] [[package]] name = "gix-protocol" -version = "0.48.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c61bd61afc6b67d213241e2100394c164be421e3f7228d3521b04f48ca5ba90" +checksum = "f5c17d78bb0414f8d60b5f952196dc2e47ec320dca885de9128ecdb4a0e38401" dependencies = [ "bstr", - "gix-date 0.9.3", - "gix-features 0.40.0", - "gix-hash 0.16.0", - "gix-ref 0.50.0", + "gix-date", + "gix-features", + "gix-hash", + "gix-ref", "gix-shallow", "gix-transport", "gix-utils", @@ -1683,9 +1511,9 @@ dependencies = [ [[package]] name = "gix-quote" -version = "0.4.15" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e49357fccdb0c85c0d3a3292a9f6db32d9b3535959b5471bb9624908f4a066c6" +checksum = "4a375a75b4d663e8bafe3bf4940a18a23755644c13582fa326e99f8f987d83fd" dependencies = [ "bstr", "gix-utils", @@ -1694,42 +1522,20 @@ dependencies = [ [[package]] name = "gix-ref" -version = "0.44.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3394a2997e5bc6b22ebc1e1a87b41eeefbcfcff3dbfa7c4bd73cb0ac8f1f3e2e" -dependencies = [ - "gix-actor 0.31.5", - "gix-date 0.8.7", - "gix-features 0.38.2", - "gix-fs 0.11.3", - "gix-hash 0.14.2", - "gix-lock 14.0.0", - "gix-object 0.42.3", - "gix-path", - "gix-tempfile 14.0.2", - "gix-utils", - "gix-validate 0.8.5", - "memmap2", - "thiserror 1.0.69", - "winnow", -] - -[[package]] -name = "gix-ref" -version = "0.50.0" +version = "0.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47adf4c5f933429f8554e95d0d92eee583cfe4b95d2bf665cd6fd4a1531ee20c" +checksum = "d1b7985657029684d759f656b09abc3e2c73085596d5cdb494428823970a7762" dependencies = [ - "gix-actor 0.33.2", - "gix-features 0.40.0", - "gix-fs 0.13.0", - "gix-hash 0.16.0", - "gix-lock 16.0.0", - "gix-object 0.47.0", + "gix-actor", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", "gix-path", - "gix-tempfile 16.0.0", + "gix-tempfile", "gix-utils", - "gix-validate 0.9.3", + "gix-validate", "memmap2", "thiserror 2.0.9", "winnow", @@ -1737,118 +1543,103 @@ dependencies = [ [[package]] name = "gix-refspec" -version = "0.28.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59650228d8f612f68e7f7a25f517fcf386c5d0d39826085492e94766858b0a90" +checksum = "445ed14e3db78e8e79980085e3723df94e1c8163b3ae5bc8ed6a8fe6cf983b42" dependencies = [ "bstr", - "gix-hash 0.16.0", + "gix-hash", "gix-revision", - "gix-validate 0.9.3", + "gix-validate", "smallvec", "thiserror 2.0.9", ] [[package]] name = "gix-revision" -version = "0.32.0" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fe28bbccca55da6d66e6c6efc6bb4003c29d407afd8178380293729733e6b53" +checksum = "78d0b8e5cbd1c329e25383e088cb8f17439414021a643b30afa5146b71e3c65d" dependencies = [ "bitflags 2.6.0", "bstr", - "gix-commitgraph 0.26.0", - "gix-date 0.9.3", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", - "gix-object 0.47.0", - "gix-revwalk 0.18.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", "gix-trace", "thiserror 2.0.9", ] [[package]] name = "gix-revwalk" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b030ccaab71af141f537e0225f19b9e74f25fefdba0372246b844491cab43e0" -dependencies = [ - "gix-commitgraph 0.24.3", - "gix-date 0.8.7", - "gix-hash 0.14.2", - "gix-hashtable 0.5.2", - "gix-object 0.42.3", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-revwalk" -version = "0.18.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ecb80c235b1e9ef2b99b23a81ea50dd569a88a9eb767179793269e0e616247" +checksum = "1bc756b73225bf005ddeb871d1ca7b3c33e2417d0d53e56effa5a36765b52b28" dependencies = [ - "gix-commitgraph 0.26.0", - "gix-date 0.9.3", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", - "gix-object 0.47.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", "smallvec", "thiserror 2.0.9", ] [[package]] name = "gix-sec" -version = "0.10.11" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d84dae13271f4313f8d60a166bf27e54c968c7c33e2ffd31c48cafe5da649875" +checksum = "d0dabbc78c759ecc006b970339394951b2c8e1e38a37b072c105b80b84c308fd" dependencies = [ "bitflags 2.6.0", "gix-path", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "gix-shallow" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab72543011e303e52733c85bef784603ef39632ddf47f69723def52825e35066" +checksum = "6b9a6f6e34d6ede08f522d89e5c7990b4f60524b8ae6ebf8e850963828119ad4" dependencies = [ "bstr", - "gix-hash 0.16.0", - "gix-lock 16.0.0", + "gix-hash", + "gix-lock", "thiserror 2.0.9", ] [[package]] name = "gix-status" -version = "0.17.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cc1d85079d7ca32c3ab4a6479bf7e174cd251c74a82339c6cc393da3f4883" +checksum = "072099c2415cfa5397df7d47eacbcb6016d2cd17e0d674c74965e6ad1b17289f" dependencies = [ "bstr", "filetime", "gix-diff", "gix-dir", - "gix-features 0.40.0", + "gix-features", "gix-filter", - "gix-fs 0.13.0", - "gix-hash 0.16.0", - "gix-index 0.38.0", - "gix-object 0.47.0", + "gix-fs", + "gix-hash", + "gix-index", + "gix-object", "gix-path", "gix-pathspec", - "gix-worktree 0.39.0", + "gix-worktree", "portable-atomic", "thiserror 2.0.9", ] [[package]] name = "gix-submodule" -version = "0.17.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74972fe8d46ac8a09490ae1e843b4caf221c5b157c5ac17057e8e1c38417a3ac" +checksum = "5f51472f05a450cc61bc91ed2f62fb06e31e2bbb31c420bc4be8793f26c8b0c1" dependencies = [ "bstr", "gix-config", @@ -1861,11 +1652,12 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "14.0.2" +version = "17.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046b4927969fa816a150a0cda2e62c80016fe11fb3c3184e4dddf4e542f108aa" +checksum = "c750e8c008453a2dba67a2b0d928b7716e05da31173a3f5e351d5457ad4470aa" dependencies = [ - "gix-fs 0.11.3", + "dashmap", + "gix-fs", "libc", "once_cell", "parking_lot", @@ -1874,37 +1666,21 @@ dependencies = [ "tempfile", ] -[[package]] -name = "gix-tempfile" -version = "16.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2558f423945ef24a8328c55d1fd6db06b8376b0e7013b1bb476cc4ffdf678501" -dependencies = [ - "dashmap", - "gix-fs 0.13.0", - "libc", - "once_cell", - "parking_lot", - "tempfile", -] - [[package]] name = "gix-testtools" -version = "0.15.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33fd7cd1816d78db635003c9e3fc667a1671689c678de2b92ce7c71ed2d58686" +checksum = "f8d46e2dc4fd0cbe726e3c0768efc8c5dba114bdfb216fde5d3b72f6ea77ec6c" dependencies = [ "bstr", "crc", "fastrand", "fs_extra", - "gix-discover 0.32.0", - "gix-fs 0.11.3", - "gix-ignore 0.11.4", - "gix-index 0.33.1", - "gix-lock 14.0.0", - "gix-tempfile 14.0.2", - "gix-worktree 0.34.1", + "gix-discover", + "gix-fs", + "gix-lock", + "gix-tempfile", + "gix-worktree", "io-close", "is_ci", "once_cell", @@ -1922,13 +1698,13 @@ checksum = "7c396a2036920c69695f760a65e7f2677267ccf483f25046977d87e4cb2665f7" [[package]] name = "gix-transport" -version = "0.45.0" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11187418489477b1b5b862ae1aedbbac77e582f2c4b0ef54280f20cfe5b964d9" +checksum = "edfe22ba26d4b65c17879f12b9882eafe65d3c8611c933b272fce2c10f546f59" dependencies = [ "bstr", "gix-command", - "gix-features 0.40.0", + "gix-features", "gix-packetline", "gix-quote", "gix-sec", @@ -1938,46 +1714,29 @@ dependencies = [ [[package]] name = "gix-traverse" -version = "0.39.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e499a18c511e71cf4a20413b743b9f5bcf64b3d9e81e9c3c6cd399eae55a8840" -dependencies = [ - "bitflags 2.6.0", - "gix-commitgraph 0.24.3", - "gix-date 0.8.7", - "gix-hash 0.14.2", - "gix-hashtable 0.5.2", - "gix-object 0.42.3", - "gix-revwalk 0.13.2", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-traverse" -version = "0.44.0" +version = "0.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bec70e53896586ef32a3efa7e4427b67308531ed186bb6120fb3eca0f0d61b4" +checksum = "39094185f6d9a4d81101130fbbf7f598a06441d774ae3b3ae7930a613bbe1157" dependencies = [ "bitflags 2.6.0", - "gix-commitgraph 0.26.0", - "gix-date 0.9.3", - "gix-hash 0.16.0", - "gix-hashtable 0.7.0", - "gix-object 0.47.0", - "gix-revwalk 0.18.0", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", "smallvec", "thiserror 2.0.9", ] [[package]] name = "gix-url" -version = "0.29.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29218c768b53dd8f116045d87fec05b294c731a4b2bdd257eeca2084cc150b13" +checksum = "42a1ad0b04a5718b5cb233e6888e52a9b627846296161d81dcc5eb9203ec84b8" dependencies = [ "bstr", - "gix-features 0.40.0", + "gix-features", "gix-path", "percent-encoding", "thiserror 2.0.9", @@ -1986,9 +1745,9 @@ dependencies = [ [[package]] name = "gix-utils" -version = "0.1.14" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff08f24e03ac8916c478c8419d7d3c33393da9bb41fa4c24455d5406aeefd35f" +checksum = "5351af2b172caf41a3728eb4455326d84e0d70fe26fc4de74ab0bd37df4191c5" dependencies = [ "bstr", "fastrand", @@ -1997,19 +1756,9 @@ dependencies = [ [[package]] name = "gix-validate" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c27dd34a49b1addf193c92070bcbf3beaf6e10f16a78544de6372e146a0acf" -dependencies = [ - "bstr", - "thiserror 1.0.69", -] - -[[package]] -name = "gix-validate" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eaa01c3337d885617c0a42e92823922a2aea71f4caeace6fe87002bdcadbd90" +checksum = "77b9e00cacde5b51388d28ed746c493b18a6add1f19b5e01d686b3b9ece66d4d" dependencies = [ "bstr", "thiserror 2.0.9", @@ -2017,40 +1766,21 @@ dependencies = [ [[package]] name = "gix-worktree" -version = "0.34.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f7326ebe0b9172220694ea69d344c536009a9b98fb0f9de092c440f3efe7a6" -dependencies = [ - "bstr", - "gix-attributes 0.22.5", - "gix-features 0.38.2", - "gix-fs 0.11.3", - "gix-glob 0.16.5", - "gix-hash 0.14.2", - "gix-ignore 0.11.4", - "gix-index 0.33.1", - "gix-object 0.42.3", - "gix-path", - "gix-validate 0.8.5", -] - -[[package]] -name = "gix-worktree" -version = "0.39.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6673512f7eaa57a6876adceca6978a501d6c6569a4f177767dc405f8b9778958" +checksum = "54f1916f8d928268300c977d773dd70a8746b646873b77add0a34876a8c847e9" dependencies = [ "bstr", - "gix-attributes 0.24.0", - "gix-features 0.40.0", - "gix-fs 0.13.0", - "gix-glob 0.18.0", - "gix-hash 0.16.0", - "gix-ignore 0.13.0", - "gix-index 0.38.0", - "gix-object 0.47.0", + "gix-attributes", + "gix-features", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-ignore", + "gix-index", + "gix-object", "gix-path", - "gix-validate 0.9.3", + "gix-validate", ] [[package]] @@ -2061,9 +1791,9 @@ checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "globset" -version = "0.4.15" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +checksum = "54a1028dfc5f5df5da8a56a73e6c153c9a9708ec57232470703592a3f18e49f5" dependencies = [ "aho-corasick", "bstr", @@ -2117,6 +1847,15 @@ dependencies = [ "crunchy", ] +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -2142,6 +1881,16 @@ version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -2175,7 +1924,7 @@ dependencies = [ "os_info", "serde", "serde_derive", - "toml 0.8.19", + "toml 0.8.22", "uuid", ] @@ -2332,7 +2081,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -2420,9 +2169,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.42.1" +version = "1.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" +checksum = "50259abbaa67d11d2bcafc7ba1d094ed7a0c70e3ce893f0d0997f73558cb3084" dependencies = [ "console", "linked-hash-map", @@ -2502,10 +2251,11 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jiff" -version = "0.1.21" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed0ce60560149333a8e41ca7dc78799c47c5fd435e2bc18faf6a054382eec037" +checksum = "5a064218214dc6a10fbae5ec5fa888d80c45d611aba169222fc272072bf7aef6" dependencies = [ + "jiff-static", "jiff-tzdb-platform", "log", "portable-atomic", @@ -2514,17 +2264,28 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "jiff-static" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "199b7932d97e325aff3a7030e141eafe7f2c6268e1d1b24859b753a627f45254" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "jiff-tzdb" -version = "0.1.1" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91335e575850c5c4c673b9bd467b0e025f164ca59d0564f69d0c2ee0ffad4653" +checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" [[package]] name = "jiff-tzdb-platform" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9835f0060a626fe59f160437bc725491a6af23133ea906500027d1bd2f8f4329" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" dependencies = [ "jiff-tzdb", ] @@ -2576,9 +2337,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libm" @@ -2598,13 +2359,12 @@ dependencies = [ ] [[package]] -name = "libz-ng-sys" -version = "1.1.20" +name = "libz-rs-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0f7295a34685977acb2e8cc8b08ee4a8dffd6cf278eeccddbe1ed55ba815d5" +checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" dependencies = [ - "cmake", - "libc", + "zlib-rs", ] [[package]] @@ -2619,6 +2379,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "litemap" version = "0.7.4" @@ -2649,7 +2415,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -2669,9 +2435,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "ff70ce3e48ae43fa075863cef62e8b43b71a4f2382229920e0df362592919430" dependencies = [ "adler2", "simd-adler32", @@ -2713,15 +2479,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "object" version = "0.36.7" @@ -2733,13 +2490,13 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "onefetch" -version = "2.23.1" +version = "2.24.0" dependencies = [ "anyhow", "askalono", @@ -2748,9 +2505,10 @@ dependencies = [ "clap_complete", "criterion", "crossbeam-channel", + "dirs", "enable-ansi-support", "gix", - "gix-features 0.40.0", + "gix-features", "gix-testtools", "globset", "human-panic", @@ -2772,20 +2530,21 @@ dependencies = [ "time", "time-humanize", "tokei", + "toml 0.8.22", "typetag", "winres", ] [[package]] name = "onefetch-ascii" -version = "2.23.1" +version = "2.24.0" dependencies = [ "owo-colors", ] [[package]] name = "onefetch-image" -version = "2.23.1" +version = "2.24.0" dependencies = [ "anyhow", "base64", @@ -2797,7 +2556,7 @@ dependencies = [ [[package]] name = "onefetch-manifest" -version = "2.23.1" +version = "2.24.0" dependencies = [ "anyhow", "cargo_toml", @@ -2811,6 +2570,12 @@ version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "os_info" version = "3.9.2" @@ -2824,9 +2589,9 @@ dependencies = [ [[package]] name = "owo-colors" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" +checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" [[package]] name = "parking_lot" @@ -2903,7 +2668,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -2972,7 +2737,7 @@ checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -3075,24 +2840,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" dependencies = [ "unicode-ident", ] [[package]] name = "prodash" -version = "28.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744a264d26b88a6a7e37cbad97953fa233b94d585236310bcbc88474b4092d79" - -[[package]] -name = "prodash" -version = "29.0.0" +version = "29.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a266d8d6020c61a437be704c5e618037588e1985c7dbb7bf8d265db84cffe325" +checksum = "f04bb108f648884c23b98a0e940ebc2c93c0c3b89f04dbaf7eb8256ce617d1bc" dependencies = [ "log", "parking_lot", @@ -3133,6 +2892,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -3166,7 +2931,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -3198,6 +2963,17 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror 2.0.9", +] + [[package]] name = "regex" version = "1.11.1" @@ -3295,9 +3071,9 @@ dependencies = [ [[package]] name = "rstest" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e905296805ab93e13c1ec3a03f4b6c4f35e9498a3d5fa96dc626d22c03cd89" +checksum = "6fc39292f8613e913f7df8fa892b8944ceb47c247b78e1b1ae2f09e019be789d" dependencies = [ "futures-timer", "futures-util", @@ -3307,9 +3083,9 @@ dependencies = [ [[package]] name = "rstest_macros" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef0053bbffce09062bee4bcc499b0fbe7a57b879f1efe088d6d8d4c7adcdef9b" +checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" dependencies = [ "cfg-if", "glob", @@ -3319,7 +3095,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.95", + "syn 2.0.100", "unicode-ident", ] @@ -3363,7 +3139,20 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -3423,14 +3212,14 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.134" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -3461,10 +3250,25 @@ dependencies = [ ] [[package]] -name = "sha1_smol" -version = "1.0.1" +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1-checked" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" +checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" +dependencies = [ + "digest", + "sha1", +] [[package]] name = "sha2" @@ -3501,9 +3305,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -3553,9 +3357,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "stable_deref_trait" @@ -3594,7 +3398,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -3610,9 +3414,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.95" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -3627,7 +3431,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -3659,15 +3463,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.15.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", - "getrandom", + "getrandom 0.3.2", "once_cell", - "rustix", + "rustix 1.0.5", "windows-sys 0.59.0", ] @@ -3709,7 +3512,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" dependencies = [ - "rustix", + "rustix 0.38.42", "windows-sys 0.59.0", ] @@ -3739,7 +3542,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -3750,7 +3553,7 @@ checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -3761,9 +3564,7 @@ checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -3859,7 +3660,7 @@ dependencies = [ "table_formatter", "tera", "term_size", - "toml 0.8.19", + "toml 0.8.22", ] [[package]] @@ -3873,9 +3674,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -3885,26 +3686,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "typeid" version = "1.0.2" @@ -3919,9 +3727,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "typetag" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "044fc3365ddd307c297fe0fe7b2e70588cdab4d0f62dc52055ca0d11b174cf0e" +checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" dependencies = [ "erased-serde", "inventory", @@ -3932,13 +3740,13 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d30226ac9cbd2d1ff775f74e8febdab985dab14fb14aa2582c29a92d5555dc" +checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -4074,7 +3882,7 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -4099,6 +3907,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.99" @@ -4120,7 +3937,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", "wasm-bindgen-shared", ] @@ -4142,7 +3959,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4410,9 +4227,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.22" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" dependencies = [ "memchr", ] @@ -4426,6 +4243,15 @@ dependencies = [ "toml 0.5.11", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -4467,7 +4293,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", "synstructure", ] @@ -4489,7 +4315,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] [[package]] @@ -4509,7 +4335,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", "synstructure", ] @@ -4532,9 +4358,15 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.100", ] +[[package]] +name = "zlib-rs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" + [[package]] name = "zstd" version = "0.13.2" diff --git a/Cargo.toml b/Cargo.toml index 40752c915..5bbd820cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,16 +2,16 @@ authors = ["o2sh "] edition = "2021" license = "MIT" -version = "2.23.1" +version = "2.24.0" repository = "https://github.com/o2sh/onefetch" [workspace] members = ["ascii", "image", "manifest"] [workspace.dependencies] -owo-colors = "4.1.0" +owo-colors = "4.2.0" anyhow = "1.0" -clap = { version = "4.5.26", features = ["derive"] } +clap = { version = "4.5.34", features = ["derive"] } image = { version = "0.25.5", default-features = false, features = [ "color_quant", "jpeg", @@ -32,24 +32,25 @@ exclude = ["docs/vercel/*"] keywords = ["git", "cli", "terminal"] name = "onefetch" homepage = "https://onefetch.dev" -rust-version = "1.81.0" +rust-version = "1.82.0" [dependencies] anyhow.workspace = true askalono = "0.5.0" byte-unit = "5.1.6" clap.workspace = true -clap_complete = "4.5.42" -crossbeam-channel = "0.5.14" -gix = { version = "0.70.0", default-features = false, features = [ +clap_complete = "4.5.47" +crossbeam-channel = "0.5.15" +dirs = "6.0.0" +gix = { version = "0.72.1", default-features = false, features = [ "max-performance-safe", "blob-diff", "mailmap", "index", "status", ] } -gix-features = { version = "0.40.0", features = ["zlib-ng"] } -globset = "0.4.15" +gix-features = { version = "0.42.1", features = ["zlib-ng"] } +globset = "0.4.16" human-panic = "2.0.2" image.workspace = true num-format = "0.4.4" @@ -67,13 +68,14 @@ strum.workspace = true time = { version = "0.3.37", features = ["formatting"] } time-humanize = { version = "0.1.3", features = ["time"] } tokei = "13.0.0-alpha.8" +toml = "0.8.22" typetag = "0.2" [dev-dependencies] criterion = "0.5.1" -gix-testtools = "0.15.0" -insta = { version = "1.42.1", features = ["json", "redactions"] } -rstest = "0.24.0" +gix-testtools = "0.16.1" +insta = { version = "1.42.2", features = ["json", "redactions"] } +rstest = "0.25.0" [[bench]] name = "repo" From 0ed9c9d5f96920adc010ae0c1488a224df208221 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 10:55:35 +0000 Subject: [PATCH 02/13] cli: fix typo --- src/cli.rs | 10 +++++----- tests/repo.rs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index df2e481ff..cd5c3bf08 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -29,7 +29,7 @@ pub struct CliOptions { #[command(flatten)] pub info: InfoCliOptions, #[command(flatten)] - pub text_formatting: TextForamttingCliOptions, + pub text_formatting: TextFormattingCliOptions, #[command(flatten)] pub ascii: AsciiCliOptions, #[command(flatten)] @@ -171,7 +171,7 @@ pub struct ImageCliOptions { #[derive(Clone, Debug, Args, PartialEq, Eq)] #[command(next_help_heading = "TEXT FORMATTING")] -pub struct TextForamttingCliOptions { +pub struct TextFormattingCliOptions { /// Changes the text colors (X X X...) /// /// Goes in order of title, ~, underline, subtitle, colon, and info @@ -240,7 +240,7 @@ impl Default for CliOptions { CliOptions { input: PathBuf::from("."), info: InfoCliOptions::default(), - text_formatting: TextForamttingCliOptions::default(), + text_formatting: TextFormattingCliOptions::default(), visuals: VisualsCliOptions::default(), ascii: AsciiCliOptions::default(), image: ImageCliOptions::default(), @@ -271,9 +271,9 @@ impl Default for InfoCliOptions { } } -impl Default for TextForamttingCliOptions { +impl Default for TextFormattingCliOptions { fn default() -> Self { - TextForamttingCliOptions { + TextFormattingCliOptions { text_colors: Default::default(), iso_time: Default::default(), number_separator: NumberSeparator::Plain, diff --git a/tests/repo.rs b/tests/repo.rs index 9c0a60512..c3b907ba6 100644 --- a/tests/repo.rs +++ b/tests/repo.rs @@ -1,6 +1,6 @@ use anyhow::Result; use gix::{open, Repository, ThreadSafeRepository}; -use onefetch::cli::{CliOptions, InfoCliOptions, TextForamttingCliOptions}; +use onefetch::cli::{CliOptions, InfoCliOptions, TextFormattingCliOptions}; use onefetch::info::{build_info, get_work_dir}; fn repo(name: &str) -> Result { @@ -42,7 +42,7 @@ fn test_repo() -> Result<()> { churn_pool_size: Some(10), ..Default::default() }, - text_formatting: TextForamttingCliOptions { + text_formatting: TextFormattingCliOptions { iso_time: true, ..Default::default() }, From 806e3cdfa42ce1f42922654fc07174a94bc99f98 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 11:11:21 +0000 Subject: [PATCH 03/13] cli: config file related flags --- src/cli.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/cli.rs b/src/cli.rs index cd5c3bf08..5efed1323 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -37,6 +37,8 @@ pub struct CliOptions { #[command(flatten)] pub visuals: VisualsCliOptions, #[command(flatten)] + pub config: ConfigCliOptions, + #[command(flatten)] pub developer: DeveloperCliOptions, #[command(flatten)] pub other: OtherCliOptions, @@ -213,6 +215,18 @@ pub struct VisualsCliOptions { pub nerd_fonts: bool, } +#[derive(Clone, Debug, Args, PartialEq, Eq)] +#[command(next_help_heading = "CONFIG")] +pub struct ConfigCliOptions { + /// Path to the config file + #[arg(long, value_hint = ValueHint::FilePath)] + pub config_path: Option, + /// Creates a default config file + /// Writes to $XDG_CONFIG_HOME/onefetch/config.toml but can be overridden with --config-path + #[arg(long)] + pub generate_config: bool, +} + #[derive(Clone, Debug, Args, PartialEq, Eq, Default)] #[command(next_help_heading = "DEVELOPER")] pub struct DeveloperCliOptions { @@ -244,6 +258,7 @@ impl Default for CliOptions { visuals: VisualsCliOptions::default(), ascii: AsciiCliOptions::default(), image: ImageCliOptions::default(), + config: ConfigCliOptions::default(), developer: DeveloperCliOptions::default(), other: OtherCliOptions::default(), } @@ -302,6 +317,20 @@ impl Default for ImageCliOptions { } } +impl Default for ConfigCliOptions { + fn default() -> Self { + ConfigCliOptions { + // Not sure about unwrap + config_path: Some( + dirs::config_dir() + .expect("Could not find $HOME!") + .join("onefetch/config.toml"), + ), + generate_config: false, + } + } +} + pub fn print_supported_languages() -> Result<()> { for l in Language::iter() { println!("{l}"); From d0668911199cfffeed472a58994dd441bca8d1c1 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 11:27:34 +0000 Subject: [PATCH 04/13] config: init --- src/cli.rs | 8 +++++--- src/config.rs | 36 ++++++++++++++++++++++++++++++++++++ src/info/utils/info_field.rs | 3 ++- src/lib.rs | 1 + 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/config.rs diff --git a/src/cli.rs b/src/cli.rs index 5efed1323..65e43f30a 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -10,7 +10,7 @@ use num_format::CustomFormat; use onefetch_image::ImageProtocol; use onefetch_manifest::ManifestType; use regex::Regex; -use serde::Serialize; +use serde::{Deserialize, Serialize}; use std::env; use std::io; use std::path::PathBuf; @@ -366,15 +366,17 @@ pub fn print_completions(gen: G, cmd: &mut Command) { generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout()); } -#[derive(clap::ValueEnum, Clone, PartialEq, Eq, Debug)] +#[derive(clap::ValueEnum, Clone, PartialEq, Eq, Debug, Serialize, Deserialize, Default)] pub enum When { + #[default] Auto, Never, Always, } -#[derive(clap::ValueEnum, Clone, PartialEq, Eq, Debug, Serialize, Copy)] +#[derive(clap::ValueEnum, Clone, PartialEq, Eq, Debug, Deserialize, Serialize, Copy, Default)] pub enum NumberSeparator { + #[default] Plain, Comma, Space, diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 000000000..daeaa08da --- /dev/null +++ b/src/config.rs @@ -0,0 +1,36 @@ +use serde::{Deserialize, Serialize}; +use crate::{ + cli::{NumberSeparator, When}, + info::utils::info_field::InfoType, +}; + +#[derive(Serialize, Deserialize)] +pub struct ConfigOptions { + // THIS IS JUST A RAW, REALLY WIP CONFIG STRUCTURE + #[serde(default)] + pub disabled_fields: Vec, + // Lol is this really will turn into comment? + /// Or maybe this? + #[serde(default)] + pub no_title: bool, + #[serde(default)] + pub number_of_authors: usize, + #[serde(default)] + pub number_of_languages: usize, + #[serde(default)] + pub number_of_file_churns: usize, + #[serde(default)] + pub no_merges: bool, + #[serde(default)] + pub include_hidden: bool, + #[serde(default)] + pub iso_time: bool, + #[serde(default)] + pub number_separator: NumberSeparator, + #[serde(default)] + pub no_bold: bool, + #[serde(default)] + pub true_color: When, + #[serde(default)] + pub nerd_fonts: bool, +} diff --git a/src/info/utils/info_field.rs b/src/info/utils/info_field.rs index 52d69011c..b90cbe3e1 100644 --- a/src/info/utils/info_field.rs +++ b/src/info/utils/info_field.rs @@ -1,5 +1,6 @@ use crate::{info::utils::get_style, ui::text_colors::TextColors}; use owo_colors::OwoColorize; +use serde::{Deserialize, Serialize}; use std::fmt; #[typetag::serialize] @@ -55,7 +56,7 @@ pub trait InfoField { } } -#[derive(Clone, clap::ValueEnum, Debug, Eq, PartialEq)] +#[derive(Clone, clap::ValueEnum, Debug, Eq, PartialEq, Serialize, Deserialize)] pub enum InfoType { Project, Description, diff --git a/src/lib.rs b/src/lib.rs index 24ff2a9fc..06c8ddffb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ // Lib is present to allow for benchmarks and integration tests pub mod cli; +pub mod config; pub mod info; pub mod ui; From e99e4ee8a262284e78b1623a14dedb7419be50fc Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 11:28:25 +0000 Subject: [PATCH 05/13] config: set default values --- src/config.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/config.rs b/src/config.rs index daeaa08da..beb75b788 100644 --- a/src/config.rs +++ b/src/config.rs @@ -34,3 +34,22 @@ pub struct ConfigOptions { #[serde(default)] pub nerd_fonts: bool, } + +impl Default for ConfigOptions { + fn default() -> Self { + Self { + disabled_fields: vec![], + no_title: false, + number_of_authors: 3usize, + number_of_languages: 6usize, + number_of_file_churns: 3usize, + no_merges: false, + include_hidden: false, + iso_time: false, + number_separator: NumberSeparator::default(), + no_bold: false, + true_color: When::Auto, + nerd_fonts: false, + } + } +} From b0949b87cdd9eabb111651079732eff414aeb610 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 11:28:56 +0000 Subject: [PATCH 06/13] config: implement r/w functions --- src/config.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/config.rs b/src/config.rs index beb75b788..31acfd716 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,7 @@ +use anyhow::Result; use serde::{Deserialize, Serialize}; +use std::{fs, path::Path}; + use crate::{ cli::{NumberSeparator, When}, info::utils::info_field::InfoType, @@ -53,3 +56,48 @@ impl Default for ConfigOptions { } } } + +impl ConfigOptions { + pub fn read

(path: P) -> Self + // Is it even should panic? + where + P: AsRef, + { + let contents = fs::read_to_string(path); + match contents { + Err(_) => Self::default(), + Ok(contents) => { + // I wish to print exact error here, like syntax errors + toml::from_str(&contents).unwrap() + } + } + } + + pub fn write

(self, path: P) -> Result<()> + // I believe user would like to generate config with CLI flags + // I mean to write disabled_fields with --disabled-fields flag + where + P: AsRef, + { + // I dont think this can panic so i simply unwrapped it + let contents = toml::to_string(&self).unwrap(); + match fs::create_dir_all(&path.as_ref().parent().unwrap_or(Path::new("/"))) { + Ok(_) => match fs::write(&path, &contents) { + Ok(_) => { + let path = path.as_ref().display(); + println!("Config config file created at: {path}") + } + Err(e) => { + let path = path.as_ref().display(); + eprintln!("Failed to write config file at {path}: {e}") + } + }, + Err(e) => { + let path = path.as_ref().display(); + eprintln!("Failed to create config directory {path}: {e}"); + } + } + // Im not sure it should return simple Ok(())? + Ok(()) + } +} From 0a80e4fc49676b157392b558889a2acace4cf9ca Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 16:10:06 +0000 Subject: [PATCH 07/13] cli + config: implement values override --- src/cli.rs | 48 ++++++++++---------- src/info/mod.rs | 86 +++++++++++++++++++++++++++--------- src/info/utils/info_field.rs | 1 + src/ui/printer.rs | 13 +++++- 4 files changed, 102 insertions(+), 46 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 65e43f30a..be028ad23 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -56,19 +56,19 @@ pub struct InfoCliOptions { value_enum, value_name = "FIELD" )] - pub disabled_fields: Vec, + pub disabled_fields: Option>, /// Hides the title #[arg(long)] - pub no_title: bool, + pub no_title: Option, /// Maximum NUM of authors to be shown - #[arg(long, default_value_t = 3usize, value_name = "NUM")] - pub number_of_authors: usize, + #[arg(long, value_name = "NUM")] + pub number_of_authors: Option, /// Maximum NUM of languages to be shown - #[arg(long, default_value_t = 6usize, value_name = "NUM")] - pub number_of_languages: usize, + #[arg(long, value_name = "NUM")] + pub number_of_languages: Option, /// Maximum NUM of file churns to be shown - #[arg(long, default_value_t = 3usize, value_name = "NUM")] - pub number_of_file_churns: usize, + #[arg(long, value_name = "NUM")] + pub number_of_file_churns: Option, /// Minimum NUM of commits from HEAD used to compute the churn summary /// /// By default, the actual value is non-deterministic due to time-based computation @@ -89,7 +89,7 @@ pub struct InfoCliOptions { pub no_bots: Option, /// Ignores merge commits #[arg(long)] - pub no_merges: bool, + pub no_merges: Option, /// Show the email address of each author #[arg(long, short = 'E')] pub email: bool, @@ -101,7 +101,7 @@ pub struct InfoCliOptions { pub hide_token: bool, /// Count hidden files and directories #[arg(long)] - pub include_hidden: bool, + pub include_hidden: Option, /// Filters output by language type #[arg( long, @@ -147,7 +147,7 @@ pub struct AsciiCliOptions { /// /// If set to auto: true color will be enabled if supported by the terminal #[arg(long, default_value = "auto", value_name = "WHEN", value_enum)] - pub true_color: When, + pub true_color: Option, } #[derive(Clone, Debug, Args, PartialEq, Eq)] @@ -191,13 +191,13 @@ pub struct TextFormattingCliOptions { pub text_colors: Vec, /// Use ISO 8601 formatted timestamps #[arg(long, short = 'z')] - pub iso_time: bool, + pub iso_time: Option, /// Which thousands SEPARATOR to use - #[arg(long, value_name = "SEPARATOR", default_value = "plain", value_enum)] - pub number_separator: NumberSeparator, + #[arg(long, value_name = "SEPARATOR", value_enum)] + pub number_separator: Option, /// Turns off bold formatting #[arg(long)] - pub no_bold: bool, + pub no_bold: Option, } #[derive(Clone, Debug, Args, PartialEq, Eq, Default)] #[command(next_help_heading = "VISUALS")] @@ -212,7 +212,7 @@ pub struct VisualsCliOptions { /// /// Replaces language chips with Nerd Font icons #[arg(long)] - pub nerd_fonts: bool, + pub nerd_fonts: Option, } #[derive(Clone, Debug, Args, PartialEq, Eq)] @@ -268,9 +268,9 @@ impl Default for CliOptions { impl Default for InfoCliOptions { fn default() -> Self { InfoCliOptions { - number_of_authors: 3, - number_of_languages: 6, - number_of_file_churns: 3, + number_of_authors: Some(3), + number_of_languages: Some(6), + number_of_file_churns: Some(3), churn_pool_size: Option::default(), exclude: Vec::default(), no_bots: Option::default(), @@ -280,7 +280,7 @@ impl Default for InfoCliOptions { hide_token: Default::default(), include_hidden: Default::default(), r#type: vec![LanguageType::Programming, LanguageType::Markup], - disabled_fields: Vec::default(), + disabled_fields: Some(Vec::default()), no_title: Default::default(), } } @@ -291,7 +291,7 @@ impl Default for TextFormattingCliOptions { TextFormattingCliOptions { text_colors: Default::default(), iso_time: Default::default(), - number_separator: NumberSeparator::Plain, + number_separator: Some(NumberSeparator::Plain), no_bold: Default::default(), } } @@ -303,7 +303,7 @@ impl Default for AsciiCliOptions { ascii_input: Option::default(), ascii_colors: Vec::default(), ascii_language: Option::default(), - true_color: When::Auto, + true_color: Some(When::Auto), } } } @@ -418,8 +418,8 @@ mod test { input: PathBuf::from("/tmp/folder"), info: InfoCliOptions { number_of_authors: 4, - no_merges: true, - disabled_fields: vec![InfoType::Version, InfoType::URL], + no_merges: Some(true), + disabled_fields: vec![InfoType::Version, InfoType::URL].into(), ..Default::default() }, ascii: AsciiCliOptions { diff --git a/src/info/mod.rs b/src/info/mod.rs index dedc08efd..553b3fdce 100644 --- a/src/info/mod.rs +++ b/src/info/mod.rs @@ -22,6 +22,7 @@ use self::url::UrlInfo; use self::utils::info_field::{InfoField, InfoType}; use self::version::VersionInfo; use crate::cli::{is_truecolor_terminal, CliOptions, NumberSeparator, When}; +use crate::config::ConfigOptions; use crate::ui::get_ascii_colors; use crate::ui::text_colors::TextColors; use anyhow::{Context, Result}; @@ -109,7 +110,7 @@ impl std::fmt::Display for Info { } } -pub fn build_info(cli_options: &CliOptions) -> Result { +pub fn build_info(cli_options: &CliOptions, config_options: &ConfigOptions) -> Result { let mut repo = gix::ThreadSafeRepository::discover_opts( &cli_options.input, gix::discover::upwards::Options { @@ -126,7 +127,10 @@ pub fn build_info(cli_options: &CliOptions) -> Result { let loc_by_language_sorted_handle = std::thread::spawn({ let globs_to_exclude = cli_options.info.exclude.clone(); let language_types = cli_options.info.r#type.clone(); - let include_hidden = cli_options.info.include_hidden; + let include_hidden = cli_options + .info + .include_hidden + .unwrap_or(config_options.include_hidden); let workdir = repo_path.clone(); move || { langs::get_loc_by_language_sorted( @@ -153,9 +157,17 @@ pub fn build_info(cli_options: &CliOptions) -> Result { &repo, cli_options.info.no_bots.clone(), cli_options.info.churn_pool_size, - cli_options.info.no_merges, + cli_options + .info + .no_merges + .unwrap_or(config_options.no_merges), )?; - let true_color = match cli_options.ascii.true_color { + let true_color = match cli_options + .ascii + .true_color + .clone() + .unwrap_or(config_options.true_color.clone()) + { When::Always => true, When::Never => false, When::Auto => is_truecolor_terminal(), @@ -169,16 +181,39 @@ pub fn build_info(cli_options: &CliOptions) -> Result { ); let text_colors = TextColors::new(&cli_options.text_formatting.text_colors, ascii_colors[0]); - let no_bold = cli_options.text_formatting.no_bold; - let number_separator = cli_options.text_formatting.number_separator; - let iso_time = cli_options.text_formatting.iso_time; - let number_of_languages_to_display = cli_options.info.number_of_languages; - let number_of_authors_to_display = cli_options.info.number_of_authors; - let number_of_file_churns_to_display = cli_options.info.number_of_file_churns; + let no_bold = cli_options + .text_formatting + .no_bold + .unwrap_or(config_options.no_bold); + let number_separator = cli_options + .text_formatting + .number_separator + .unwrap_or(config_options.number_separator); + let iso_time = cli_options + .text_formatting + .iso_time + .unwrap_or(config_options.iso_time); + let number_of_languages_to_display = cli_options + .info + .number_of_languages + .unwrap_or(config_options.number_of_languages); + // This looks weird i think i should refactor unwrapping + let number_of_authors_to_display = cli_options + .info + .number_of_authors + .unwrap_or(config_options.number_of_authors); + let number_of_file_churns_to_display = cli_options + .info + .number_of_file_churns + .unwrap_or(config_options.number_of_file_churns); let globs_to_exclude = &cli_options.info.exclude; let show_email = cli_options.info.email; + let nerd_fonts = cli_options + .visuals + .nerd_fonts + .unwrap_or(config_options.nerd_fonts); - Ok(InfoBuilder::new(cli_options) + Ok(InfoBuilder::new(cli_options, config_options) .title(&repo, no_bold, &text_colors) .project(&repo, &repo_url, manifest.as_ref(), number_separator)? .description(manifest.as_ref()) @@ -191,7 +226,7 @@ pub fn build_info(cli_options: &CliOptions) -> Result { true_color, number_of_languages_to_display, &text_colors, - cli_options, + nerd_fonts, ) .dependencies(manifest.as_ref(), number_separator) .authors( @@ -213,16 +248,26 @@ pub fn build_info(cli_options: &CliOptions) -> Result { .loc(&loc_by_language, number_separator) .size(&repo, number_separator) .license(&repo_path, manifest.as_ref())? - .build(cli_options, text_colors, dominant_language, ascii_colors)) + .build( + cli_options, + no_bold, + text_colors, + dominant_language, + ascii_colors, + )) } impl InfoBuilder { - fn new(cli_options: &CliOptions) -> Self { + fn new(cli_options: &CliOptions, config_options: &ConfigOptions) -> Self { Self { title: None, info_fields: Vec::new(), - disabled_fields: cli_options.info.disabled_fields.clone(), - no_title: cli_options.info.no_title, + disabled_fields: cli_options + .info + .disabled_fields + .clone() + .unwrap_or(config_options.disabled_fields.clone()), + no_title: cli_options.info.no_title.unwrap_or(config_options.no_title), } } @@ -324,7 +369,7 @@ impl InfoBuilder { true_color: bool, number_of_languages: usize, text_colors: &TextColors, - cli_options: &CliOptions, + nerd_fonts: bool, ) -> Self { if !self.disabled_fields.contains(&InfoType::Languages) { let languages = LanguagesInfo::new( @@ -332,7 +377,7 @@ impl InfoBuilder { true_color, number_of_languages, text_colors.info, - cli_options.visuals.nerd_fonts, + nerd_fonts, ); self.info_fields.push(Box::new(languages)); } @@ -444,6 +489,7 @@ impl InfoBuilder { fn build( self, cli_options: &CliOptions, + no_bold: bool, text_colors: TextColors, dominant_language: Language, ascii_colors: Vec, @@ -455,7 +501,7 @@ impl InfoBuilder { dominant_language, ascii_colors, no_color_palette: cli_options.visuals.no_color_palette, - no_bold: cli_options.text_formatting.no_bold, + no_bold: no_bold, } } } @@ -472,7 +518,7 @@ fn get_manifest(repo_path: &Path) -> Result> { pub fn get_work_dir(repo: &gix::Repository) -> Result { Ok(repo - .work_dir() + .workdir() .context("please run onefetch inside of a non-bare git repository")? .to_owned()) } diff --git a/src/info/utils/info_field.rs b/src/info/utils/info_field.rs index b90cbe3e1..f8226a03d 100644 --- a/src/info/utils/info_field.rs +++ b/src/info/utils/info_field.rs @@ -75,6 +75,7 @@ pub enum InfoType { LinesOfCode, Size, License, + None, } #[cfg(test)] diff --git a/src/ui/printer.rs b/src/ui/printer.rs index 6661dbeb8..3d5f36a54 100644 --- a/src/ui/printer.rs +++ b/src/ui/printer.rs @@ -1,4 +1,5 @@ use crate::cli::CliOptions; +use crate::config::ConfigOptions; use crate::info::Info; use crate::ui::Language; use anyhow::{Context, Result}; @@ -30,7 +31,12 @@ pub struct Printer { } impl Printer { - pub fn new(writer: W, info: Info, cli_options: CliOptions) -> Result { + pub fn new( + writer: W, + info: Info, + cli_options: CliOptions, + config_options: ConfigOptions, + ) -> Result { let image = match cli_options.image.image { Some(p) => Some(image::open(p).context("Could not load the specified image")?), None => None, @@ -55,7 +61,10 @@ impl Printer { image, image_backend, color_resolution: cli_options.image.color_resolution, - no_bold: cli_options.text_formatting.no_bold, + no_bold: cli_options + .text_formatting + .no_bold + .unwrap_or(config_options.no_bold), ascii_input: cli_options.ascii.ascii_input, ascii_language: cli_options.ascii.ascii_language, }) From a8ec72de3bcb447b18d494b33e9a264d08feb873 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 16:10:26 +0000 Subject: [PATCH 08/13] main: parse config file --- src/main.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 00e3237e4..b2ef0bfa3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ use anyhow::Result; use clap::{CommandFactory, Parser}; use human_panic::setup_panic; use onefetch::cli::{self, CliOptions}; +use onefetch::config::ConfigOptions; use onefetch::info::build_info; use onefetch::ui::printer::Printer; use std::io; @@ -30,9 +31,25 @@ fn main() -> Result<()> { return Ok(()); } - let info = build_info(&cli_options)?; + if cli_options.config.generate_config { + return ConfigOptions::default().write( + &cli_options.config.config_path.unwrap_or( + dirs::config_dir() + .expect("Could not find config dir!") + .join("onefetch/config.toml"), + ), + ); + } + + let config_options = ConfigOptions::read( + &cli_options.config.config_path.as_ref().unwrap_or( + &CliOptions::default().config.config_path.expect("$HOME not found!") + ), + ); + + let info = build_info(&cli_options, &config_options)?; - let mut printer = Printer::new(io::BufWriter::new(io::stdout()), info, cli_options)?; + let mut printer = Printer::new(io::BufWriter::new(io::stdout()), info, cli_options,config_options)?; printer.print()?; From 025df7f8f8e97665ba796649e5f75bfc82cf2dd8 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Sun, 11 May 2025 16:16:37 +0000 Subject: [PATCH 09/13] tests + benches: adapt --- benches/repo.rs | 5 +++-- src/cli.rs | 2 +- tests/repo.rs | 15 ++++++++++----- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/benches/repo.rs b/benches/repo.rs index 2178b57fe..9547c4784 100644 --- a/benches/repo.rs +++ b/benches/repo.rs @@ -1,6 +1,6 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion}; use gix::{open, ThreadSafeRepository}; -use onefetch::{cli::CliOptions, info::build_info}; +use onefetch::{cli::CliOptions, config::ConfigOptions, info::build_info}; fn bench_repo_info(c: &mut Criterion) { let name = "make_repo.sh".to_string(); @@ -10,10 +10,11 @@ fn bench_repo_info(c: &mut Criterion) { input: repo.path().to_path_buf(), ..Default::default() }; + let toml = ConfigOptions::default(); c.bench_function("get repo information", |b| { b.iter(|| { - let result = black_box(build_info(&config)); + let result = black_box(build_info(&config, &toml)); assert!(result.is_ok()); }); }); diff --git a/src/cli.rs b/src/cli.rs index be028ad23..26c90033f 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -417,7 +417,7 @@ mod test { let config: CliOptions = CliOptions { input: PathBuf::from("/tmp/folder"), info: InfoCliOptions { - number_of_authors: 4, + number_of_authors: Some(4), no_merges: Some(true), disabled_fields: vec![InfoType::Version, InfoType::URL].into(), ..Default::default() diff --git a/tests/repo.rs b/tests/repo.rs index c3b907ba6..c715697f7 100644 --- a/tests/repo.rs +++ b/tests/repo.rs @@ -1,6 +1,7 @@ use anyhow::Result; use gix::{open, Repository, ThreadSafeRepository}; use onefetch::cli::{CliOptions, InfoCliOptions, TextFormattingCliOptions}; +use onefetch::config::ConfigOptions; use onefetch::info::{build_info, get_work_dir}; fn repo(name: &str) -> Result { @@ -43,12 +44,13 @@ fn test_repo() -> Result<()> { ..Default::default() }, text_formatting: TextFormattingCliOptions { - iso_time: true, + iso_time: Some(true), ..Default::default() }, ..Default::default() }; - let info = build_info(&config)?; + let toml = ConfigOptions::default(); + let info = build_info(&config, &toml)?; insta::assert_json_snapshot!( info, { @@ -67,7 +69,8 @@ fn test_repo_without_remote() -> Result<()> { input: repo.path().to_path_buf(), ..Default::default() }; - let info = build_info(&config); + let toml = ConfigOptions::default(); + let info = build_info(&config, &toml); assert!(info.is_ok()); Ok(()) @@ -80,7 +83,8 @@ fn test_partial_repo() -> Result<()> { input: repo.path().to_path_buf(), ..Default::default() }; - let _info = build_info(&config).expect("no error"); + let toml = ConfigOptions::default(); + let _info = build_info(&config, &toml).expect("no error"); Ok(()) } @@ -91,6 +95,7 @@ fn test_repo_with_pre_epoch_dates() -> Result<()> { input: repo.path().to_path_buf(), ..Default::default() }; - let _info = build_info(&config).expect("no error"); + let toml = ConfigOptions::default(); + let _info = build_info(&config, &toml).expect("no error"); Ok(()) } From f650385548454178e430de929b84538296ea901a Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Wed, 4 Jun 2025 08:49:30 +0000 Subject: [PATCH 10/13] cli: more general comments --- src/cli.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cli.rs b/src/cli.rs index 26c90033f..f721c9927 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -222,7 +222,8 @@ pub struct ConfigCliOptions { #[arg(long, value_hint = ValueHint::FilePath)] pub config_path: Option, /// Creates a default config file - /// Writes to $XDG_CONFIG_HOME/onefetch/config.toml but can be overridden with --config-path + /// By default, creates onefetch/config.toml at your config direrctory + /// but it can be overridden with --config-path #[arg(long)] pub generate_config: bool, } @@ -323,7 +324,7 @@ impl Default for ConfigCliOptions { // Not sure about unwrap config_path: Some( dirs::config_dir() - .expect("Could not find $HOME!") + .expect("Config directory is not found!") .join("onefetch/config.toml"), ), generate_config: false, From e0316767bc49207ac59b20b677a3754b2ce5cfb8 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Wed, 4 Jun 2025 11:06:12 +0000 Subject: [PATCH 11/13] cli: better doc format for config options --- src/cli.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cli.rs b/src/cli.rs index f721c9927..3f215d2ab 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -222,7 +222,9 @@ pub struct ConfigCliOptions { #[arg(long, value_hint = ValueHint::FilePath)] pub config_path: Option, /// Creates a default config file + /// /// By default, creates onefetch/config.toml at your config direrctory + /// /// but it can be overridden with --config-path #[arg(long)] pub generate_config: bool, From e9a0ea42883b3c199850bc83c35363cfd3f06969 Mon Sep 17 00:00:00 2001 From: Sk7Str1p3 Date: Wed, 4 Jun 2025 11:08:07 +0000 Subject: [PATCH 12/13] config: write: better error handling and code --- Cargo.lock | 4 ++-- src/config.rs | 30 +++++++++++++----------------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e73d7aef..55b21d73d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,9 +331,9 @@ checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cargo_toml" -version = "0.22.1" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" +checksum = "5fbd1fe9db3ebf71b89060adaf7b0504c2d6a425cf061313099547e382c2e472" dependencies = [ "serde", "toml 0.8.22", diff --git a/src/config.rs b/src/config.rs index 31acfd716..36b17e157 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,4 +1,4 @@ -use anyhow::Result; +use anyhow::{Context, Result}; use serde::{Deserialize, Serialize}; use std::{fs, path::Path}; @@ -81,23 +81,19 @@ impl ConfigOptions { { // I dont think this can panic so i simply unwrapped it let contents = toml::to_string(&self).unwrap(); - match fs::create_dir_all(&path.as_ref().parent().unwrap_or(Path::new("/"))) { - Ok(_) => match fs::write(&path, &contents) { - Ok(_) => { - let path = path.as_ref().display(); - println!("Config config file created at: {path}") - } - Err(e) => { - let path = path.as_ref().display(); - eprintln!("Failed to write config file at {path}: {e}") - } - }, - Err(e) => { - let path = path.as_ref().display(); - eprintln!("Failed to create config directory {path}: {e}"); - } + let dir = path + .as_ref() + .parent() + .with_context(|| format!("'{}' is not a path!", path.as_ref().display())); + fs::create_dir_all(dir?)?; + match fs::write(&path, contents) { + Ok(_) => println!("Created default config at {}", path.as_ref().display()), + Err(e) => eprintln!( + "Failed to write default config at {}: {}", + path.as_ref().display(), + e + ), } - // Im not sure it should return simple Ok(())? Ok(()) } } From 1658ad4461d2493f5fa285e3ba972c5f769c1030 Mon Sep 17 00:00:00 2001 From: Fedor Finenko <159684143+Sk7Str1p3@users.noreply.github.com> Date: Thu, 5 Jun 2025 19:19:40 +0000 Subject: [PATCH 13/13] Create flake.yml --- .github/workflows/flake.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/flake.yml diff --git a/.github/workflows/flake.yml b/.github/workflows/flake.yml new file mode 100644 index 000000000..0830fc9ad --- /dev/null +++ b/.github/workflows/flake.yml @@ -0,0 +1,28 @@ +name: Weekly flake.lock update + +on: + schedule: + - cron: '0 11 * * 4' + workflow_dispatch: + +jobs: + update-flake: + permissions: + contents: write + id-token: write + issues: write + pull-requests: write + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: DeterminateSystems/determinate-nix-action@v3 + - name: Update flake.lock + id: flake-upd + uses: DeterminateSystems/update-flake-lock@v25 + with: + pr-title: "Update flake.lock to nixpkgs ${{ steps.flake-upd.outputs.commit-hash }}" + pr-labels: | + dependencies + pr-rebase: true +