From 375b0aa3c1567b0a8584b70ae8a7bb4ae0bef715 Mon Sep 17 00:00:00 2001 From: Asthowen Date: Fri, 29 Aug 2025 00:51:00 +0200 Subject: [PATCH] feat: replace colored with owo-colors --- Cargo.lock | 174 +++++++++++++++++++------------------- Cargo.toml | 12 +-- src/config/deserialize.rs | 23 ++++- src/config/mod.rs | 2 +- src/main.rs | 71 +++++++++------- src/system/networks.rs | 11 ++- src/util/colored.rs | 27 ------ src/util/mod.rs | 1 - 8 files changed, 159 insertions(+), 162 deletions(-) delete mode 100644 src/util/colored.rs diff --git a/Cargo.lock b/Cargo.lock index 19dd68d..a399033 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,10 +13,10 @@ name = "afetch" version = "0.0.7" dependencies = [ "bitcode", - "colored", "csscolorparser", "dirs", "image", + "owo-colors", "rayon", "serde", "serde_json", @@ -52,15 +52,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arg_enum_proc_macro" @@ -101,9 +101,9 @@ dependencies = [ [[package]] name = "avif-serialize" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ea8ef51aced2b9191c08197f55450d830876d9933f8f48a429b354f1d496b42" +checksum = "47c8fbc0f831f4519fe8b810b6a7a91410ec83031b8233f730a0480029f6a23f" dependencies = [ "arrayvec", ] @@ -116,15 +116,15 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bit_field" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" [[package]] name = "bitcode" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf300f4aa6e66f3bdff11f1236a88c622fe47ea814524792240b4d554d9858ee" +checksum = "648bd963d2e5d465377acecfb4b827f9f553b6bc97a8f61715779e9ed9e52b74" dependencies = [ "arrayvec", "bitcode_derive", @@ -135,9 +135,9 @@ dependencies = [ [[package]] name = "bitcode_derive" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b6b4cb608b8282dc3b53d0f4c9ab404655d562674c682db7e6c0458cc83c23" +checksum = "ffebfc2d28a12b262c303cb3860ee77b91bd83b1f20f0bd2a9693008e2f55a9e" dependencies = [ "proc-macro2", "quote", @@ -152,9 +152,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" [[package]] name = "bitstream-io" @@ -176,9 +176,9 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" [[package]] name = "byteorder-lite" @@ -188,9 +188,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "cc" -version = "1.2.31" +version = "1.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3a42d84bb6b69d3a8b3eaacf0d88f179e1929695e1ad012b6cf64d9caaa5fd2" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" dependencies = [ "jobserver", "libc", @@ -209,9 +209,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -225,14 +225,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "colored" -version = "3.0.0" -source = "git+https://github.com/colored-rs/colored?branch=master#68761c1dfe306c870aa94af085c4686bce8d5fbd" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "console" version = "0.15.11" @@ -301,7 +293,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "crossterm_winapi", "parking_lot", "rustix 0.38.44", @@ -476,7 +468,7 @@ dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", ] [[package]] @@ -507,9 +499,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" [[package]] name = "heck" @@ -542,9 +534,9 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6970fe7a5300b4b42e62c52efa0187540a5bef546c60edaf554ef595d2e6f0b" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" dependencies = [ "byteorder-lite", "quick-error", @@ -558,9 +550,9 @@ checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408" [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown", @@ -594,9 +586,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ "getrandom 0.3.3", "libc", @@ -628,9 +620,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libfuzzer-sys" @@ -648,8 +640,9 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "libc", + "redox_syscall", ] [[package]] @@ -742,7 +735,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "cfg-if", "cfg_aliases", "libc", @@ -835,7 +828,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", ] [[package]] @@ -860,6 +853,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "owo-colors" +version = "4.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" + [[package]] name = "parking_lot" version = "0.12.4" @@ -980,9 +979,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] @@ -1023,9 +1022,9 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.38.0" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8927b0664f5c5a98265138b7e3f90aa19a6b21353182469ace36d4ac527b7b1b" +checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" dependencies = [ "memchr", ] @@ -1127,9 +1126,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -1137,9 +1136,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1151,7 +1150,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", ] [[package]] @@ -1162,7 +1161,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.16", ] [[package]] @@ -1180,7 +1179,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys 0.4.15", @@ -1193,7 +1192,7 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys 0.9.4", @@ -1202,9 +1201,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -1240,9 +1239,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -1337,9 +1336,9 @@ checksum = "b7401a30af6cb5818bb64852270bb722533397edcfc7344954a38f420819ece2" [[package]] name = "syn" -version = "2.0.104" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -1357,9 +1356,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.36.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d" +checksum = "07cec4dc2d2e357ca1e610cfb07de2fa7a10fc3e9fe89f72545f3d244ea87753" dependencies = [ "libc", "memchr", @@ -1390,15 +1389,15 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix 1.0.8", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -1421,11 +1420,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.16", ] [[package]] @@ -1441,9 +1440,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -1604,11 +1603,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -1694,11 +1693,11 @@ dependencies = [ [[package]] name = "whoami" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall", + "libredox", "wasite", ] @@ -1720,11 +1719,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -1993,9 +1992,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -2007,13 +2006,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "zerocopy" diff --git a/Cargo.toml b/Cargo.toml index 818d48b..7c88099 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "afetch" version = "0.0.7" authors = ["Asthowen", "Squitch1"] edition = "2024" -rust-version = "1.85.0" +rust-version = "1.88.0" description = "A CLI system information tool written in Rust." repository = "https://github.com/Asthowen/AFetch" readme = "README.md" @@ -23,7 +23,6 @@ opt-level = 3 strip = true [dependencies] -colored = { version = "3.0.0", git = "https://github.com/colored-rs/colored", branch = "master" } whoami = { version = "1.5.2", default-features = false } serde = { version = "1.0.219", features = ["derive"] } image = { version = "0.25.6", optional = true } @@ -33,12 +32,13 @@ strip-ansi-escapes = "0.2.1" starship-battery = "0.10.2" supports-unicode = "3.0.0" csscolorparser = "0.7.2" -serde_json = "1.0.142" +serde_json = "1.0.143" sys-locale = "0.3.2" -sysinfo = "0.36.1" -bitcode = "0.6.6" +owo-colors = "4.2.2" +sysinfo = "0.37.0" +bitcode = "0.6.7" socket2 = "0.6.0" -rayon = "1.10.0" +rayon = "1.11.0" which = "8.0.0" dirs = "6.0.0" diff --git a/src/config/deserialize.rs b/src/config/deserialize.rs index e875565..6515726 100644 --- a/src/config/deserialize.rs +++ b/src/config/deserialize.rs @@ -1,7 +1,7 @@ use crate::{ config::SeparatorSizing, logos::get_logo, system::InfoKind, translations::get_language, - util::colored::ColorWrapper, }; +use owo_colors::DynColors; use serde::Deserialize; #[derive(Debug, Deserialize)] @@ -124,6 +124,27 @@ enum ColorRepr<'a> { Text(&'a str), } +#[derive(Debug, Clone, Copy, bitcode::Decode, bitcode::Encode)] +pub enum ColorWrapper { + Rgb { r: u8, g: u8, b: u8 }, + Ansi(u8), +} + +impl From for DynColors { + fn from(value: ColorWrapper) -> Self { + match value { + ColorWrapper::Ansi(color) => Self::Xterm(color.into()), + ColorWrapper::Rgb { r, g, b } => Self::Rgb(r, g, b), + } + } +} + +impl Default for ColorWrapper { + fn default() -> Self { + Self::Ansi(6) + } +} + #[inline] fn color_repr_to_wrapper( color: Option, diff --git a/src/config/mod.rs b/src/config/mod.rs index 043df60..704cea7 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -3,10 +3,10 @@ pub mod deserialize; use crate::{ + config::deserialize::ColorWrapper, error::FetchInfoError, system::{InfoField, InfoKind}, translations::get_language, - util::colored::ColorWrapper, }; use bitcode::{Decode, Encode}; use serde::Deserialize; diff --git a/src/main.rs b/src/main.rs index cdbd8bd..92f8840 100755 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +use afetch::config::deserialize::ColorWrapper; use afetch::config::{Config, Entry, LogoStyle, SeparatorSizing, load_config}; use afetch::error::{ErrorType, FetchInfoError}; use afetch::logos::get_logo; @@ -16,11 +17,10 @@ use afetch::system::public_ip::get_public_ip; use afetch::system::uptime::get_uptime; use afetch::system::{InfoGroup, InfoKind, InfoResult}; use afetch::translations::get_language; -use afetch::util::colored::{ColorWrapper, ColorizeExt}; use afetch::util::count_str_length; #[cfg(feature = "image")] use afetch::util::print_picture; -use colored::Colorize; +use owo_colors::{DynColors, OwoColorize, XtermColors}; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; use std::collections::HashMap; use std::fmt::Write; @@ -70,25 +70,38 @@ fn main() -> Result<(), FetchInfoError> { None }; - let header_color = match config.colors.header { - Some(color) => color, + let header_color: DynColors = match config.colors.header { + Some(color) => color.into(), None => match logo.as_ref() { - Some(color) => ColorWrapper::Ansi(color.1), - None => ColorWrapper::Ansi(6), + Some(color) => DynColors::Xterm(color.1.into()), + None => DynColors::Xterm(XtermColors::Cyan), }, }; - let header_separator_color = config.colors.header_separator.unwrap_or(match &logo { - Some(color) => ColorWrapper::Ansi(color.1), - None => ColorWrapper::Ansi(6), - }); - let info_color = config.colors.info.unwrap_or(match &logo { - Some(color) => ColorWrapper::Ansi(color.1), - None => ColorWrapper::Ansi(6), - }); - let separator_color = config.colors.separator.unwrap_or(match &logo { - Some(color) => ColorWrapper::Ansi(color.1), - None => ColorWrapper::Ansi(6), - }); + let header_separator_color: DynColors = config + .colors + .header_separator + .map(ColorWrapper::into) + .unwrap_or(match &logo { + Some(color) => DynColors::Xterm(color.1.into()), + None => DynColors::Xterm(XtermColors::Cyan), + }); + let info_color: DynColors = config + .colors + .info + .map(ColorWrapper::into) + .unwrap_or(match &logo { + Some(color) => DynColors::Xterm(color.1.into()), + None => DynColors::Xterm(XtermColors::Cyan), + }); + let separator_color: DynColors = + config + .colors + .separator + .map(ColorWrapper::into) + .unwrap_or(match &logo { + Some(color) => DynColors::Xterm(color.1.into()), + None => DynColors::Xterm(XtermColors::Cyan), + }); let mut output: String = String::default(); let mut last_info_len = 0; @@ -153,9 +166,9 @@ fn main() -> Result<(), FetchInfoError> { formatted_info = format!( "{}{}{}", - formatted_header.custom_color_wrapper(header_color).bold(), - separator.custom_color_wrapper(header_separator_color), - formatted_info.custom_color_wrapper(info_color) + formatted_header.color(header_color).bold(), + separator.color(header_separator_color), + formatted_info.color(info_color) ); write_entry(formatted_info); @@ -174,11 +187,7 @@ fn main() -> Result<(), FetchInfoError> { } }; - write_entry( - formatted_separator - .custom_color_wrapper(separator_color) - .to_string(), - ); + write_entry(formatted_separator.color(separator_color).to_string()); } Entry::ColorBlocks { content, display } => { if display.show_normal() { @@ -199,11 +208,11 @@ fn main() -> Result<(), FetchInfoError> { } } - if let Some((_, _, lines)) = &logo { - if i < lines.len() { - for logo_line in &lines[i..] { - writeln!(output, " {}{}", logo_line, "".white()).ok(); - } + if let Some((_, _, lines)) = &logo + && i < lines.len() + { + for logo_line in &lines[i..] { + writeln!(output, " {}{}", logo_line, "".white()).ok(); } } diff --git a/src/system/networks.rs b/src/system/networks.rs index 811aa37..4af033d 100644 --- a/src/system/networks.rs +++ b/src/system/networks.rs @@ -48,12 +48,11 @@ pub fn get_networks( .map(|ip| ip.addr); let first_ipv6 = network.ip_networks().iter().find(|ip| ip.addr.is_ipv6()); - if config.parameters.networks.private_only { - if let Some(IpAddr::V4(ip)) = first_ipv4 { - if !ip.is_private() { - continue; - } - } + if config.parameters.networks.private_only + && let Some(IpAddr::V4(ip)) = first_ipv4 + && !ip.is_private() + { + continue; } networks_info.push(InfoGroup { diff --git a/src/util/colored.rs b/src/util/colored.rs deleted file mode 100644 index bc65111..0000000 --- a/src/util/colored.rs +++ /dev/null @@ -1,27 +0,0 @@ -use colored::{Color, ColoredString, Colorize}; - -#[derive(Debug, Clone, Copy, bitcode::Decode, bitcode::Encode)] -pub enum ColorWrapper { - Rgb { r: u8, g: u8, b: u8 }, - Ansi(u8), -} - -impl Default for ColorWrapper { - fn default() -> Self { - Self::Ansi(0) - } -} - -pub trait ColorizeExt: Colorize { - fn custom_color_wrapper(self, color: impl Into) -> ColoredString - where - Self: Sized, - { - match color.into() { - ColorWrapper::Ansi(color) => self.color(Color::AnsiColor(color)), - ColorWrapper::Rgb { r, g, b } => self.color(Color::TrueColor { r, g, b }), - } - } -} - -impl ColorizeExt for &str {} diff --git a/src/util/mod.rs b/src/util/mod.rs index dfbac39..3787fff 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,4 +1,3 @@ -pub mod colored; mod filtered_values; pub use filtered_values::ToOptionString;