From 5afbb521db20fc6cb13cee6f8b0f9cc1fdd93bc3 Mon Sep 17 00:00:00 2001 From: core Date: Mon, 24 Nov 2025 17:14:36 -0500 Subject: [PATCH] work --- Cargo.lock | 1182 +---------------- .../assets/config/parts/housing.part.toml | 9 +- crates/unified/src/main.rs | 6 +- crates/xtask/Cargo.toml | 8 +- crates/xtask/src/main.rs | 390 +----- crates/xtask/src/unified.rs | 60 + crates/xtask/src/unified_web.rs | 17 + crates/xtask/src/util.rs | 30 + 8 files changed, 213 insertions(+), 1489 deletions(-) create mode 100644 crates/xtask/src/unified.rs create mode 100644 crates/xtask/src/unified_web.rs create mode 100644 crates/xtask/src/util.rs diff --git a/Cargo.lock b/Cargo.lock index ce70a838569ac2119b5a0ac2b20544ac73ba2d71..709926833b887672eed5b493b1ae3d2bd1d312b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,15 +169,6 @@ dependencies = [ "winit", ] -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -276,17 +267,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - [[package]] name = "ahash" version = "0.8.12" @@ -363,56 +343,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" -[[package]] -name = "anstream" -version = "0.6.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - [[package]] name = "anstyle" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" -[[package]] -name = "anstyle-parse" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" -dependencies = [ - "anstyle", - "once_cell_polyfill", - "windows-sys 0.61.2", -] - [[package]] name = "anyhow" version = "1.0.100" @@ -428,15 +364,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - [[package]] name = "arboard" version = "3.6.1" @@ -478,12 +405,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" -[[package]] -name = "ascii" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" - [[package]] name = "ash" version = "0.38.0+1.3.281" @@ -788,21 +709,6 @@ dependencies = [ "fs_extra", ] -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-link 0.2.1", -] - [[package]] name = "base64" version = "0.22.1" @@ -995,7 +901,7 @@ dependencies = [ "csv", "serde", "thiserror 2.0.17", - "toml 0.9.8", + "toml", ] [[package]] @@ -1417,7 +1323,7 @@ dependencies = [ "proc-macro2", "quote", "syn", - "toml_edit 0.23.7", + "toml_edit", ] [[package]] @@ -2040,24 +1946,6 @@ dependencies = [ "winit", ] -[[package]] -name = "binary-install" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5252e41a4ed7657f79827123f232443077984ec55c540adf48e8fe67b6ec0763" -dependencies = [ - "anyhow", - "dirs-next", - "flate2", - "fs4", - "hex", - "is_executable", - "siphasher 0.3.11", - "tar", - "ureq", - "zip", -] - [[package]] name = "bindgen" version = "0.72.1" @@ -2225,25 +2113,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "bzip2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" -dependencies = [ - "bzip2-sys", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "calloop" version = "0.13.0" @@ -2295,38 +2164,6 @@ dependencies = [ "wayland-client", ] -[[package]] -name = "camino" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 1.0.69", -] - [[package]] name = "cast" version = "0.3.0" @@ -2388,18 +2225,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ "iana-time-zone", - "js-sys", "num-traits", - "wasm-bindgen", "windows-link 0.2.1", ] -[[package]] -name = "chunked_transfer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" - [[package]] name = "ciborium" version = "0.2.2" @@ -2427,16 +2256,6 @@ dependencies = [ "half", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clang-sys" version = "1.8.1" @@ -2455,7 +2274,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", - "clap_derive", ] [[package]] @@ -2464,22 +2282,8 @@ version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ - "anstream", "anstyle", "clap_lex", - "strsim 0.11.1", -] - -[[package]] -name = "clap_derive" -version = "4.5.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", ] [[package]] @@ -2532,19 +2336,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" -[[package]] -name = "colorchoice" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" - [[package]] name = "colored" -version = "2.2.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "lazy_static", "windows-sys 0.59.0", ] @@ -2568,19 +2365,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -2708,15 +2492,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core_maths" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" -dependencies = [ - "libm", -] - [[package]] name = "cosmic-text" version = "0.14.2" @@ -2724,11 +2499,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" dependencies = [ "bitflags 2.10.0", - "fontdb 0.16.2", + "fontdb", "log", "rangemap", "rustc-hash 1.1.0", - "rustybuzz 0.14.1", + "rustybuzz", "self_cell", "smol_str", "swash", @@ -2749,21 +2524,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crc" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" -dependencies = [ - "crc-catalog", -] - -[[package]] -name = "crc-catalog" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" - [[package]] name = "crc32fast" version = "1.5.0" @@ -2924,12 +2684,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" -[[package]] -name = "deflate64" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204" - [[package]] name = "deranged" version = "0.5.5" @@ -2939,17 +2693,6 @@ dependencies = [ "powerfmt", ] -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "derive_more" version = "2.0.1" @@ -2977,18 +2720,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11277822c27bde750de02c5dc5159b91e88bf2661a2c1d98106f2fb1c5c6f590" -[[package]] -name = "dialoguer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" -dependencies = [ - "console", - "shell-words", - "tempfile", - "zeroize", -] - [[package]] name = "digest" version = "0.10.7" @@ -2997,7 +2728,6 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", - "subtle", ] [[package]] @@ -3081,27 +2811,6 @@ dependencies = [ "warnings", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -3442,12 +3151,6 @@ dependencies = [ "syn", ] -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - [[package]] name = "endi" version = "1.1.0" @@ -3506,15 +3209,6 @@ dependencies = [ "syn", ] -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "log", -] - [[package]] name = "epaint" version = "0.32.3" @@ -3670,18 +3364,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "filetime" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.60.2", -] - [[package]] name = "find-msvc-tools" version = "0.1.5" @@ -3760,20 +3442,6 @@ dependencies = [ "ttf-parser 0.20.0", ] -[[package]] -name = "fontdb" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905" -dependencies = [ - "fontconfig-parser", - "log", - "memmap2", - "slotmap", - "tinyvec", - "ttf-parser 0.25.1", -] - [[package]] name = "foreign-types" version = "0.5.0" @@ -3810,16 +3478,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs4" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47" -dependencies = [ - "rustix 0.38.44", - "windows-sys 0.48.0", -] - [[package]] name = "fs_extra" version = "1.3.0" @@ -3992,16 +3650,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gif" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" -dependencies = [ - "color_quant", - "weezl", -] - [[package]] name = "gif" version = "0.14.0" @@ -4032,7 +3680,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be11a71ac3564f6965839e2ed275bf4fcf5ce16d80d396e1dfdb7b2d80bd587e" dependencies = [ "core-foundation 0.10.1", - "inotify 0.11.0", + "inotify", "io-kit-sys", "js-sys", "libc", @@ -4046,12 +3694,6 @@ dependencies = [ "windows 0.61.3", ] -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - [[package]] name = "git2" version = "0.20.2" @@ -4431,24 +4073,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "http" version = "1.3.1" @@ -4467,30 +4091,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "human-panic" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f016c89920bbb30951a8405ecacbb4540db5524313b9445736e7e1855cf370" -dependencies = [ - "anstream", - "anstyle", - "backtrace", - "os_info", - "serde", - "serde_derive", - "toml 0.8.23", - "uuid", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.64" +name = "iana-time-zone" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ @@ -4623,7 +4225,7 @@ dependencies = [ "bytemuck", "byteorder-lite", "color_quant", - "gif 0.14.0", + "gif", "image-webp", "moxcms", "num-traits", @@ -4659,17 +4261,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "inotify" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" -dependencies = [ - "bitflags 1.3.2", - "inotify-sys", - "libc", -] - [[package]] name = "inotify" version = "0.11.0" @@ -4690,24 +4281,6 @@ dependencies = [ "libc", ] -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "inventory" version = "0.3.21" @@ -4738,21 +4311,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "is_executable" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d553b8abc8187beb7d663e34c065ac4570b273bc9511a50e940e99409c577" -dependencies = [ - "winapi", -] - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" - [[package]] name = "itertools" version = "0.10.5" @@ -5048,27 +4606,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" -[[package]] -name = "lzma-rs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" -dependencies = [ - "byteorder", - "crc", -] - -[[package]] -name = "lzma-sys" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "mach2" version = "0.4.3" @@ -5437,25 +4974,6 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" -[[package]] -name = "notify" -version = "7.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" -dependencies = [ - "bitflags 2.10.0", - "filetime", - "fsevent-sys", - "inotify 0.10.2", - "kqueue", - "libc", - "log", - "mio", - "notify-types 1.0.1", - "walkdir", - "windows-sys 0.52.0", -] - [[package]] name = "notify" version = "8.2.0" @@ -5464,12 +4982,12 @@ checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" dependencies = [ "bitflags 2.10.0", "fsevent-sys", - "inotify 0.11.0", + "inotify", "kqueue", "libc", "log", "mio", - "notify-types 2.0.0", + "notify-types", "walkdir", "windows-sys 0.60.2", ] @@ -5482,20 +5000,11 @@ checksum = "d2d88b1a7538054351c8258338df7c931a590513fb3745e8c15eb9ff4199b8d1" dependencies = [ "file-id", "log", - "notify 8.2.0", - "notify-types 2.0.0", + "notify", + "notify-types", "walkdir", ] -[[package]] -name = "notify-types" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585d3cb5e12e01aed9e8a1f70d5c6b5e86fe2a6e48fc8cd0b3e0b8df6f6eb174" -dependencies = [ - "instant", -] - [[package]] name = "notify-types" version = "2.0.0" @@ -5644,10 +5153,10 @@ dependencies = [ "block2 0.5.1", "libc", "objc2 0.5.2", - "objc2-core-data 0.2.2", - "objc2-core-image 0.2.2", + "objc2-core-data", + "objc2-core-image", "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", + "objc2-quartz-core", ] [[package]] @@ -5672,21 +5181,10 @@ dependencies = [ "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-core-location 0.2.2", + "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-cloud-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" -dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-contacts" version = "0.2.2" @@ -5710,16 +5208,6 @@ dependencies = [ "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-core-data" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" -dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-core-foundation" version = "0.3.2" @@ -5756,16 +5244,6 @@ dependencies = [ "objc2-metal", ] -[[package]] -name = "objc2-core-image" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" -dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-core-location" version = "0.2.2" @@ -5778,28 +5256,6 @@ dependencies = [ "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-core-location" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" -dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", -] - -[[package]] -name = "objc2-core-text" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" -dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", - "objc2-core-foundation", - "objc2-core-graphics", -] - [[package]] name = "objc2-encode" version = "4.1.0" @@ -5826,8 +5282,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ "bitflags 2.10.0", - "block2 0.6.2", - "libc", "objc2 0.6.3", "objc2-core-foundation", ] @@ -5880,18 +5334,6 @@ dependencies = [ "objc2-metal", ] -[[package]] -name = "objc2-quartz-core" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" -dependencies = [ - "bitflags 2.10.0", - "objc2 0.6.3", - "objc2-core-foundation", - "objc2-foundation 0.3.2", -] - [[package]] name = "objc2-symbols" version = "0.2.2" @@ -5911,37 +5353,16 @@ dependencies = [ "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-cloud-kit 0.2.2", - "objc2-core-data 0.2.2", - "objc2-core-image 0.2.2", - "objc2-core-location 0.2.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", "objc2-foundation 0.2.2", "objc2-link-presentation", - "objc2-quartz-core 0.2.2", + "objc2-quartz-core", "objc2-symbols", "objc2-uniform-type-identifiers", - "objc2-user-notifications 0.2.2", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" -dependencies = [ - "bitflags 2.10.0", - "block2 0.6.2", - "objc2 0.6.3", - "objc2-cloud-kit 0.3.2", - "objc2-core-data 0.3.2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image 0.3.2", - "objc2-core-location 0.3.2", - "objc2-core-text", - "objc2-foundation 0.3.2", - "objc2-quartz-core 0.3.2", - "objc2-user-notifications 0.3.2", + "objc2-user-notifications", ] [[package]] @@ -5964,29 +5385,10 @@ dependencies = [ "bitflags 2.10.0", "block2 0.5.1", "objc2 0.5.2", - "objc2-core-location 0.2.2", + "objc2-core-location", "objc2-foundation 0.2.2", ] -[[package]] -name = "objc2-user-notifications" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" -dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", -] - -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - [[package]] name = "octs" version = "1.0.0" @@ -6012,12 +5414,6 @@ version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" -[[package]] -name = "once_cell_polyfill" -version = "1.70.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" - [[package]] name = "oorandom" version = "11.1.5" @@ -6069,22 +5465,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "os_info" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c39b5918402d564846d5aba164c09a66cc88d232179dfd3e3c619a25a268392" -dependencies = [ - "android_system_properties", - "log", - "nix", - "objc2 0.6.3", - "objc2-foundation 0.3.2", - "objc2-ui-kit 0.3.2", - "serde", - "windows-sys 0.61.2", -] - [[package]] name = "owned_ttf_parser" version = "0.25.1" @@ -6189,22 +5569,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "path-clean" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17359afc20d7ab31fdb42bb844c8b3bb1dabd7dcf7e68428492da7f16966fcef" - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest", - "hmac", -] - [[package]] name = "pem" version = "3.0.6" @@ -6273,7 +5637,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher 1.0.1", + "siphasher", "unicase", ] @@ -6492,7 +5856,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.7", + "toml_edit", ] [[package]] @@ -6541,6 +5905,15 @@ dependencies = [ "num-traits", ] +[[package]] +name = "qsv-tabwriter" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54463b66af16cc13ab644a864ca4f6972e7d612317d64caf4a30867f12637e50" +dependencies = [ + "unicode-width", +] + [[package]] name = "quick-error" version = "2.0.1" @@ -6736,17 +6109,6 @@ dependencies = [ "bitflags 2.10.0", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.16", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "regex" version = "1.12.2" @@ -6788,15 +6150,12 @@ version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43" dependencies = [ - "gif 0.13.3", - "image-webp", "log", "pico-args", "rgb", "svgtypes", "tiny-skia", "usvg", - "zune-jpeg", ] [[package]] @@ -6872,12 +6231,6 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" -[[package]] -name = "rustc-demangle" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" - [[package]] name = "rustc-hash" version = "1.1.0" @@ -6982,26 +6335,8 @@ dependencies = [ "libm", "smallvec", "ttf-parser 0.21.1", - "unicode-bidi-mirroring 0.2.0", - "unicode-ccc 0.2.0", - "unicode-properties", - "unicode-script", -] - -[[package]] -name = "rustybuzz" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702" -dependencies = [ - "bitflags 2.10.0", - "bytemuck", - "core_maths", - "log", - "smallvec", - "ttf-parser 0.25.1", - "unicode-bidi-mirroring 0.4.0", - "unicode-ccc 0.4.0", + "unicode-bidi-mirroring", + "unicode-ccc", "unicode-properties", "unicode-script", ] @@ -7102,16 +6437,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" -[[package]] -name = "semver" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" -dependencies = [ - "serde", - "serde_core", -] - [[package]] name = "send_wrapper" version = "0.6.0" @@ -7167,16 +6492,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_ignored" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115dffd5f3853e06e746965a20dcbae6ee747ae30b543d91b0e089668bb07798" -dependencies = [ - "serde", - "serde_core", -] - [[package]] name = "serde_json" version = "1.0.145" @@ -7201,15 +6516,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_spanned" version = "1.0.3" @@ -7239,12 +6545,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - [[package]] name = "shlex" version = "1.3.0" @@ -7289,12 +6589,6 @@ dependencies = [ "log", ] -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - [[package]] name = "siphasher" version = "1.0.1" @@ -7418,17 +6712,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "socks" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b" -dependencies = [ - "byteorder", - "libc", - "winapi", -] - [[package]] name = "spade" version = "2.15.0" @@ -7530,18 +6813,6 @@ dependencies = [ "float-cmp", ] -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - [[package]] name = "strum" version = "0.26.3" @@ -7611,7 +6882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc" dependencies = [ "kurbo", - "siphasher 1.0.1", + "siphasher", ] [[package]] @@ -7668,17 +6939,6 @@ dependencies = [ "slotmap", ] -[[package]] -name = "tar" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" -dependencies = [ - "filetime", - "libc", - "xattr", -] - [[package]] name = "tempfile" version = "3.23.0" @@ -7821,18 +7081,6 @@ dependencies = [ "strict-num", ] -[[package]] -name = "tiny_http" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82" -dependencies = [ - "ascii", - "chunked_transfer", - "httpdate", - "log", -] - [[package]] name = "tinystr" version = "0.8.2" @@ -7908,30 +7156,6 @@ dependencies = [ "tungstenite 0.26.2", ] -[[package]] -name = "toml" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit 0.19.15", -] - -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - [[package]] name = "toml" version = "0.9.8" @@ -7940,20 +7164,11 @@ checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" dependencies = [ "indexmap", "serde_core", - "serde_spanned 1.0.3", - "toml_datetime 0.7.3", + "serde_spanned", + "toml_datetime", "toml_parser", "toml_writer", - "winnow 0.7.13", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", + "winnow", ] [[package]] @@ -7965,32 +7180,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.11", - "toml_write", -] - [[package]] name = "toml_edit" version = "0.23.7" @@ -7998,9 +7187,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" dependencies = [ "indexmap", - "toml_datetime 0.7.3", + "toml_datetime", "toml_parser", - "winnow 0.7.13", + "winnow", ] [[package]] @@ -8009,15 +7198,9 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" dependencies = [ - "winnow 0.7.13", + "winnow", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "toml_writer" version = "1.0.4" @@ -8126,9 +7309,6 @@ name = "ttf-parser" version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" -dependencies = [ - "core_maths", -] [[package]] name = "tungstenite" @@ -8248,24 +7428,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86" -[[package]] -name = "unicode-bidi-mirroring" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe" - [[package]] name = "unicode-ccc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656" -[[package]] -name = "unicode-ccc" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e" - [[package]] name = "unicode-ident" version = "1.0.22" @@ -8296,12 +7464,6 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" -[[package]] -name = "unicode-vo" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" - [[package]] name = "unicode-width" version = "0.2.2" @@ -8332,9 +7494,6 @@ dependencies = [ "once_cell", "rustls", "rustls-pki-types", - "serde", - "serde_json", - "socks", "url", "webpki-roots 0.26.11", ] @@ -8360,21 +7519,16 @@ dependencies = [ "base64", "data-url", "flate2", - "fontdb 0.23.0", "imagesize", "kurbo", "log", "pico-args", "roxmltree", - "rustybuzz 0.20.1", "simplecss", - "siphasher 1.0.1", + "siphasher", "strict-num", "svgtypes", "tiny-skia-path", - "unicode-bidi", - "unicode-script", - "unicode-vo", "xmlwriter", ] @@ -8390,12 +7544,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - [[package]] name = "uuid" version = "1.18.1" @@ -8548,38 +7696,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-pack" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bccc8879c3bbff33e5e7049a4e4889efa816271de754de5d781927492b0318b0" -dependencies = [ - "anyhow", - "binary-install", - "cargo_metadata", - "chrono", - "clap", - "console", - "dialoguer", - "env_logger", - "glob", - "human-panic", - "log", - "parking_lot", - "path-clean", - "semver", - "serde", - "serde_derive", - "serde_ignored", - "serde_json", - "siphasher 0.3.11", - "strsim 0.10.0", - "toml 0.7.8", - "ureq", - "walkdir", - "which", -] - [[package]] name = "wayland-backend" version = "0.3.11" @@ -9082,18 +8198,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "wide" version = "0.7.33" @@ -9347,15 +8451,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -9407,21 +8502,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -9470,12 +8550,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -9494,12 +8568,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -9518,12 +8586,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -9554,12 +8616,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -9578,12 +8634,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -9602,12 +8652,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -9626,12 +8670,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -9670,7 +8708,7 @@ dependencies = [ "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", - "objc2-ui-kit 0.2.2", + "objc2-ui-kit", "orbclient", "percent-encoding", "pin-project", @@ -9696,15 +8734,6 @@ dependencies = [ "xkbcommon-dl", ] -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - [[package]] name = "winnow" version = "0.7.13" @@ -9758,16 +8787,6 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" -[[package]] -name = "xattr" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" -dependencies = [ - "libc", - "rustix 1.1.2", -] - [[package]] name = "xcursor" version = "0.3.10" @@ -9809,12 +8828,8 @@ checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9" name = "xtask" version = "0.1.0" dependencies = [ - "anyhow", "colored", - "notify 7.0.0", - "resvg", - "tiny_http", - "wasm-pack", + "qsv-tabwriter", ] [[package]] @@ -9823,15 +8838,6 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" -[[package]] -name = "xz2" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" -dependencies = [ - "lzma-sys", -] - [[package]] name = "yasna" version = "0.5.2" @@ -9898,7 +8904,7 @@ dependencies = [ "uds_windows", "uuid", "windows-sys 0.61.2", - "winnow 0.7.13", + "winnow", "zbus_macros", "zbus_names", "zvariant", @@ -9951,7 +8957,7 @@ checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" dependencies = [ "serde", "static_assertions", - "winnow 0.7.13", + "winnow", "zvariant", ] @@ -10020,20 +9026,6 @@ name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] [[package]] name = "zerotrie" @@ -10068,76 +9060,6 @@ dependencies = [ "syn", ] -[[package]] -name = "zip" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "aes", - "arbitrary", - "bzip2", - "constant_time_eq", - "crc32fast", - "crossbeam-utils", - "deflate64", - "displaydoc", - "flate2", - "getrandom 0.3.4", - "hmac", - "indexmap", - "lzma-rs", - "memchr", - "pbkdf2", - "sha1", - "thiserror 2.0.17", - "time", - "xz2", - "zeroize", - "zopfli", - "zstd", -] - -[[package]] -name = "zopfli" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249" -dependencies = [ - "bumpalo", - "crc32fast", - "log", - "simd-adler32", -] - -[[package]] -name = "zstd" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" -dependencies = [ - "zstd-safe", -] - -[[package]] -name = "zstd-safe" -version = "7.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" -dependencies = [ - "zstd-sys", -] - -[[package]] -name = "zstd-sys" -version = "2.0.16+zstd.1.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "zune-core" version = "0.4.12" @@ -10162,7 +9084,7 @@ dependencies = [ "endi", "enumflags2", "serde", - "winnow 0.7.13", + "winnow", "zvariant_derive", "zvariant_utils", ] @@ -10190,5 +9112,5 @@ dependencies = [ "quote", "serde", "syn", - "winnow 0.7.13", + "winnow", ] diff --git a/crates/unified/assets/config/parts/housing.part.toml b/crates/unified/assets/config/parts/housing.part.toml index ed744a1a09dfdd529a0ff48c8264cb638c80487a..1aad45036c22af6d7b3440ff69a014a250352022 100644 --- a/crates/unified/assets/config/parts/housing.part.toml +++ b/crates/unified/assets/config/parts/housing.part.toml @@ -1,13 +1,18 @@ [part] name = "Housing" -sprite_connected = "textures/housing.png" -sprite_disconnected = "textures/housing.png" +sprite_connected = "textures/thruster_on.png" +sprite_disconnected = "textures/thruster_off.png" [physics] width = 50 height = 50 mass = 50 +[[thruster]] +id = "main" +apply_force_at_local = [ 0, 0 ] +thrust_vector = [ 0.0, -4500.0 ] + [[joint]] id = "Top" target = { translation = [ 0.0, 55.0, 0.0 ], rotation = 0.0 } diff --git a/crates/unified/src/main.rs b/crates/unified/src/main.rs index b7e0b01730a9ba987383fbef30098b4bade87262..9efef618f31484e4205305a210e58ac34b72b2b1 100644 --- a/crates/unified/src/main.rs +++ b/crates/unified/src/main.rs @@ -144,7 +144,11 @@ fn main() -> AppExit { tracing_subscriber::fmt() .with_env_filter( - tracing_subscriber::EnvFilter::from_default_env().add_directive(tracing_subscriber::filter::Directive::from_str("naga=error").unwrap()), + tracing_subscriber::EnvFilter::from_default_env() + .add_directive(tracing_subscriber::filter::Directive::from_str("naga=error").unwrap()) + .add_directive(tracing_subscriber::filter::Directive::from_str("info").unwrap()) + .add_directive(tracing_subscriber::filter::Directive::from_str("starkingdoms=trace").unwrap()) + , ) .finish() .init(); diff --git a/crates/xtask/Cargo.toml b/crates/xtask/Cargo.toml index 657391f2d1dd6c3a642e51c5f0168c22e0848ccd..a8af8c99cbf47469c552529990069812ae5e6db6 100644 --- a/crates/xtask/Cargo.toml +++ b/crates/xtask/Cargo.toml @@ -4,9 +4,5 @@ version = "0.1.0" edition = "2021" [dependencies] -wasm-pack = "0.13" -colored = "2" -anyhow = "1" -notify = "7" -tiny_http = "0.12" -resvg = "0.45" \ No newline at end of file +colored = "3" +qsv-tabwriter = "2" \ No newline at end of file diff --git a/crates/xtask/src/main.rs b/crates/xtask/src/main.rs index 2b16980388bfe41690fcc77232fa6734eaba17f0..61bb03a4afa82cd6e988ed03aa71058b2acad920 100644 --- a/crates/xtask/src/main.rs +++ b/crates/xtask/src/main.rs @@ -1,364 +1,54 @@ -#![feature(exit_status_error)] - +use std::io::{stdout, Write}; use colored::Colorize; -use notify::{Event, EventKind, RecursiveMode, Watcher}; -use std::env::{args, var}; -use std::fs; -use std::io::{stdout, Cursor, Write}; -use std::path::{Path, PathBuf}; -use std::process::{exit, Command}; -use std::sync::mpsc; -use std::sync::mpsc::TryRecvError; -use std::thread::sleep; -use std::time::{Duration, Instant}; -use tiny_http::{Response, Server, StatusCode}; -use wasm_pack::command::build::{BuildOptions, Target}; -use wasm_pack::command::run_wasm_pack; -use wasm_pack::progressbar::LogLevel; +use qsv_tabwriter::TabWriter; +use crate::unified::{RunClientNative, RunListenServerNative, RunServerNative}; +use crate::unified_web::RunClientWeb; -fn workspace_dir() -> PathBuf { - let output = std::process::Command::new(env!("CARGO")) - .arg("locate-project") - .arg("--workspace") - .arg("--message-format=plain") - .output() - .unwrap() - .stdout; - let cargo_path = Path::new(std::str::from_utf8(&output).unwrap().trim()); - cargo_path.parent().unwrap().to_path_buf() -} +mod unified; +mod unified_web; +mod util; -fn build_client() -> anyhow::Result<()> { - let cli = wasm_pack::Cli { - cmd: wasm_pack::command::Command::Build(BuildOptions { - path: Some(workspace_dir().join("crates/client")), - scope: None, - mode: Default::default(), - disable_dts: false, - weak_refs: false, - reference_types: false, - target: Target::Web, - debug: false, - dev: false, - release: false, - profiling: false, - out_dir: "pkg".to_string(), - out_name: None, - no_pack: false, - no_opt: true, - extra_options: vec![], - }), - verbosity: 0, - quiet: true, - log_level: LogLevel::Error, +fn main() { + let args = std::env::args(); + let Some(taskname) = args.skip(1).next() else { + print_tasks(); + return; }; - run_wasm_pack(cli.cmd) -} - -fn try_build_client() -> bool { - match build_client() { - Ok(_) => { - println!( - "{} -- Client package built successfully", - "✓ Success".green().bold() - ); - true - } - Err(e) => { - eprintln!( - "{} -- Client package failed to build: {}", - "✗ Failed".red().bold(), - e - ); - false - } - } -} -fn start_server() { - let bind = var("BIND").unwrap_or("[::]:8000".to_string()); - let server = Server::http(&bind).unwrap(); - println!("{} on {bind}", "✓ Listening".magenta().bold()); - for req in server.incoming_requests() { - let mut path = Path::new(req.url()); - if path == Path::new("/") { - path = Path::new("/index.html"); - } + // find task + let all_tasks = tasks(); + let task = all_tasks.iter().find(|u| u.name() == taskname); - let path = path.strip_prefix(Path::new("/")).unwrap(); - - let full_path = workspace_dir().join("crates/unified").join(path); - - let content = match fs::read(full_path.clone()) { - Ok(r) => r, - Err(_) => { - let _ = req.respond(Response::new( - StatusCode::from(404), - vec![], - Cursor::new(vec![]), - None, - None, - )); - continue; - } - }; - - let len = content.len(); - - let header = tiny_http::Header::from_bytes( - &b"Content-Type"[..], - if full_path.to_str().unwrap().ends_with(".html") { - &b"text/html"[..] - } else if full_path.to_str().unwrap().ends_with(".js") { - &b"text/javascript"[..] - } else if full_path.to_str().unwrap().ends_with(".wasm") { - &b"application/wasm"[..] - } else { - &b"application/octet-stream"[..] - }, - ) - .unwrap(); - - let response = Response::new( - StatusCode::from(200), - vec![header], - Cursor::new(content), - Some(len), - None, - ); - let _ = req.respond(response); + if let Some(task) = task { + println!("{}{}{}", "============ EXECUTING TASK: ".bold().green(), "starkingdoms:".purple(), task.name().cyan()); + task.run(std::env::args().skip(2).collect()); + } else { + print_tasks(); } } -fn main() { - let mut args = args(); - let subcommand = args.nth(1).unwrap(); - - match subcommand.as_str() { - "hp:unified:native" => { - let asset_dir = workspace_dir().join("crates/unified/"); - - Command::new("dx") - .args([ - "serve", - "--package", - "starkingdoms", - "--hot-patch", - "--features", - "bevy/hotpatching", - "--features", - "native", - "--features", - "bevy/dynamic_linking", - "--features", - "server", - "--features", - "client", - "--args", - &args.collect::>().join(" ") - ]) - .env("BEVY_ASSET_ROOT", asset_dir.to_string_lossy().to_string()) - .env("RUST_LOG", "info,starkingdoms=trace") - .spawn() - .unwrap() - .wait() - .unwrap(); - }, - "client" => { - if !try_build_client() { - exit(1); - } - } - "watch" | "serve" => { - let serve = subcommand == "serve"; - - if serve { - std::thread::spawn(start_server); - } - - //try_build_client(); - let (tx, rx) = mpsc::channel::>(); - - // Use recommended_watcher() to automatically select the best implementation - // for your platform. The `EventHandler` passed to this constructor can be a - // closure, a `std::sync::mpsc::Sender`, a `crossbeam_channel::Sender`, or - // another type the trait is implemented for. - let mut watcher = notify::recommended_watcher(tx).unwrap(); - - // Add a path to be watched. All files and directories at that path and - // below will be monitored for changes. - watcher - .watch(&workspace_dir().join("crates"), RecursiveMode::Recursive) - .unwrap(); - println!("{}", "[Watch] 🛈 Watching for file changes".blue().bold()); - // Block forever, printing out events as they come in - - let mut needs_rebuild = false; - - loop { - let res = rx.try_recv(); - - let res = match res { - Ok(r) => r, - Err(TryRecvError::Empty) => { - if needs_rebuild { - // wait 1s then check again, then rebuild - sleep(Duration::from_secs(1)); - if let Ok(r) = rx.try_recv() { - r - } else { - try_build_client(); - needs_rebuild = false; - - rx.recv().unwrap() - } - } else { - rx.recv().unwrap() - } - } - Err(TryRecvError::Disconnected) => panic!("{:?}", TryRecvError::Disconnected), - }; +pub trait Task { + fn name(&self) -> &'static str; + fn help(&self) -> &'static str; + fn run(&self, args: Vec); +} - match res { - Ok(event) => { - if let EventKind::Modify(_) = event.kind { - for path in &event.paths { - if !path.to_str().unwrap().contains("client/pkg") - && !path.to_str().unwrap().ends_with("~") - { - needs_rebuild = true; - } - } - } - } - Err(e) => { - eprintln!( - "{} -- Error watching for files: {}", - "[Watch] ✗ Error".red().bold(), - e - ); - } - } - } - } - "asset:process" => { - // png-ify textures - let paths = - fs::read_dir(workspace_dir().join("crates/unified/assets/vector_textures/")) - .unwrap(); - let output_dir = workspace_dir().join("crates/unified/assets/textures/"); - for path in paths { - let path = path.unwrap().path(); - let Some(extension) = path.extension() else { - continue; - }; - if extension != "svg" { - continue; - } - let Some(filename) = path.file_stem() else { - continue; - }; - print!("[{}] {}.svg", ">".blue(), filename.to_string_lossy()); - stdout().flush().unwrap(); - let start = Instant::now(); - let tree = { - let mut opt = resvg::usvg::Options { - resources_dir: std::fs::canonicalize(&path) - .ok() - .and_then(|p| p.parent().map(|p| p.to_path_buf())), - ..resvg::usvg::Options::default() - }; - opt.fontdb_mut().load_system_fonts(); - let svg_data = std::fs::read(&path).unwrap(); - resvg::usvg::Tree::from_data(&svg_data, &opt).unwrap() - }; +fn tasks() -> Vec> { + let mut v: Vec> = vec![]; - let pixmap_size = tree.size().to_int_size(); - let mut pixmap = - resvg::tiny_skia::Pixmap::new(pixmap_size.width(), pixmap_size.height()) - .unwrap(); - resvg::render( - &tree, - resvg::tiny_skia::Transform::default(), - &mut pixmap.as_mut(), - ); - pixmap - .save_png(output_dir.join(format!("{}.png", filename.to_string_lossy()))) - .unwrap(); + v.push(Box::new(RunClientNative)); + v.push(Box::new(RunServerNative)); + v.push(Box::new(RunClientWeb)); + v.push(Box::new(RunListenServerNative)); - println!( - " {} {}.png {} {}", - "-->".dimmed(), - filename.to_string_lossy(), - "✓ success".green(), - format!("{}ms", start.elapsed().as_millis()).dimmed() - ); - } - } - "unified:web" => { - let start = Instant::now(); - let target = workspace_dir().join("target/"); - let unified = workspace_dir().join("crates/unified/"); - exec("cargo", "build --package starkingdoms --target wasm32-unknown-unknown -F wasm --no-default-features"); - let wasm_file = target.join("wasm32-unknown-unknown/debug/starkingdoms.wasm"); - exec( - "wasm-bindgen", - format!( - "--target web --typescript --out-dir {} {}", - unified.join("web/").display(), - wasm_file.display() - ) - .as_str(), - ); - println!( - "{} {} {}", - "-->".dimmed(), - "✓ done".green(), - format!("{}ms", start.elapsed().as_millis()).dimmed() - ); - } - "unified:web:release" => { - let start = Instant::now(); - let target = workspace_dir().join("target/"); - let unified = workspace_dir().join("crates/unified/"); - exec("cargo", "build --package starkingdoms --lib --target wasm32-unknown-unknown -F wasm --no-default-features --profile wasm-release"); - let wasm_file = target.join("wasm32-unknown-unknown/wasm-release/starkingdoms.wasm"); - exec( - "wasm-bindgen", - format!( - "--target web --typescript --out-dir {} {}", - unified.join("web/").display(), - wasm_file.display() - ) - .as_str(), - ); - exec( - "wasm-opt", - format!( - "-Oz -d {} -o {}", - unified.join("web/starkingdoms_bg.wasm").display(), - unified.join("web/starkingdoms_bg.wasm").display() - ) - .as_str(), - ); - println!( - "{} {} {}", - "-->".dimmed(), - "✓ done".green(), - format!("{}ms", start.elapsed().as_millis()).dimmed() - ); - } - _ => panic!("unsupported command"), - } + v } -fn exec(program: &str, args: &str) { - println!("[{}] {} {}", "+".blue(), program, args); - Command::new(program) - .args(args.split(" ").collect::>()) - .spawn() - .unwrap() - .wait() - .unwrap() - .exit_ok().unwrap(); -} +fn print_tasks() { + println!("{}", "Available tasks".underline()); + let mut w = TabWriter::new(stdout()); + for task in tasks() { + writeln!(w, "{}\t{}", task.name().cyan(), task.help()).unwrap(); + } + w.flush().unwrap(); +} \ No newline at end of file diff --git a/crates/xtask/src/unified.rs b/crates/xtask/src/unified.rs new file mode 100644 index 0000000000000000000000000000000000000000..7b698879086c42c91d6191ee556772c1413fde26 --- /dev/null +++ b/crates/xtask/src/unified.rs @@ -0,0 +1,60 @@ +use std::env::set_current_dir; +use crate::Task; +use crate::util::{cargo, workspace_dir}; + +#[derive(Default)] +pub struct RunServerNative; +impl Task for RunServerNative { + fn name(&self) -> &'static str { + "unified:server" + } + fn help(&self) -> &'static str { + "Run the server (native)" + } + + fn run(&self, args: Vec) { + let args = if args.is_empty() { + "-b [::]:5151 -r 60 -c 10".to_string() + } else { + args.join(" ") + }; + set_current_dir(workspace_dir().join("crates/unified/")).unwrap(); + cargo(format!("run -F native -F server --package starkingdoms -- server {args}")); + } +} + +#[derive(Default)] +pub struct RunListenServerNative; +impl Task for RunListenServerNative { + fn name(&self) -> &'static str { + "unified:listenserver" + } + fn help(&self) -> &'static str { + "Run the server and client (native)" + } + + fn run(&self, args: Vec) { + let args = if args.is_empty() { + "-b [::]:5151 -r 60 -c 10 --with-client".to_string() + } else { + args.join(" ") + }; + set_current_dir(workspace_dir().join("crates/unified/")).unwrap(); + cargo(format!("run -F native -F server -F client --package starkingdoms -- server {args}")); + } +} + +#[derive(Default)] +pub struct RunClientNative; +impl Task for RunClientNative { + fn name(&self) -> &'static str { + "unified:client" + } + fn help(&self) -> &'static str { + "Run the client (native)" + } + + fn run(&self, _args: Vec) { + + } +} \ No newline at end of file diff --git a/crates/xtask/src/unified_web.rs b/crates/xtask/src/unified_web.rs new file mode 100644 index 0000000000000000000000000000000000000000..c7631c8031379cad860a4d773928ce1e99bdd85c --- /dev/null +++ b/crates/xtask/src/unified_web.rs @@ -0,0 +1,17 @@ + +use crate::Task; + +#[derive(Default)] +pub struct RunClientWeb; +impl Task for RunClientWeb { + fn name(&self) -> &'static str { + "unified:web:client" + } + fn help(&self) -> &'static str { + "Build the client (web)" + } + + fn run(&self, _args: Vec) { + + } +} \ No newline at end of file diff --git a/crates/xtask/src/util.rs b/crates/xtask/src/util.rs new file mode 100644 index 0000000000000000000000000000000000000000..aa450d8f30a3e81d34ee7250bb76639ce36d6368 --- /dev/null +++ b/crates/xtask/src/util.rs @@ -0,0 +1,30 @@ +use std::path::{Path, PathBuf}; +use std::process::exit; +use colored::Colorize; + +pub fn workspace_dir() -> PathBuf { + let output = std::process::Command::new(env!("CARGO")) + .arg("locate-project") + .arg("--workspace") + .arg("--message-format=plain") + .output() + .unwrap() + .stdout; + let cargo_path = Path::new(std::str::from_utf8(&output).unwrap().trim()); + cargo_path.parent().unwrap().to_path_buf() +} + +pub fn cargo(cmd: String) { + println!("{} cargo {}", "[cargo]".bold().cyan(), cmd); + let mut output = std::process::Command::new(env!("CARGO")); + + for command in cmd.split(" ") { + output.arg(command); + } + let output = output.spawn().unwrap().wait().unwrap(); + + if !output.success() { + println!("{}", "============ TASK FAILED".bold().red()); + exit(1); + } +} \ No newline at end of file