diff --git a/Cargo.lock b/Cargo.lock index 457f7273..4758d89b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -130,9 +130,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.101" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arraydeque" @@ -160,9 +160,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-compression" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d67d43201f4d20c78bcda740c142ca52482d81da80681533d33bf3f0596c8e2" +checksum = "d0f9ee0f6e02ffd7ad5816e9464499fba7b3effd01123b515c41d1697c43dad1" dependencies = [ "compression-codecs", "compression-core", @@ -179,7 +179,8 @@ dependencies = [ "bincode", "blake3", "bytes", - "clap 4.5.59", + "clap 4.5.60", + "clap_complete", "criterion", "crossbeam-channel", "csv", @@ -418,9 +419,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.1" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6f81257d10a0f602a294ae4182251151ff97dbb504ef9afcdda4a64b24d9b4" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "byteorder" @@ -537,9 +538,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.59" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5caf74d17c3aec5495110c34cc3f78644bfa89af6c8993ed4de2790e49b6499" +checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" dependencies = [ "clap_builder", "clap_derive", @@ -547,9 +548,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.59" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "370daa45065b80218950227371916a1633217ae42b2715b2287b606dcd618e24" +checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" dependencies = [ "anstream", "anstyle", @@ -557,6 +558,15 @@ dependencies = [ "strsim 0.11.1", ] +[[package]] +name = "clap_complete" +version = "4.5.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031" +dependencies = [ + "clap 4.5.60", +] + [[package]] name = "clap_derive" version = "4.5.55" @@ -566,7 +576,7 @@ dependencies = [ "heck", "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -711,7 +721,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.59", + "clap 4.5.60", "criterion-plot", "itertools", "num-traits", @@ -815,9 +825,9 @@ checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "deranged" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc3dc5ad92c2e2d1c193bbbbdf2ea477cb81331de4f3103f267ca18368b988c4" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -905,7 +915,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1133,7 +1143,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1647,9 +1657,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c867c356cc096b33f4981825ab281ecba3db0acefe60329f044c1789d94c6543" +checksum = "819b44bc7c87d9117eb522f14d46e918add69ff12713c475946b0a29363ed1c2" dependencies = [ "jiff-static", "log", @@ -1660,13 +1670,13 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7946b4325269738f270bb55b3c19ab5c5040525f83fd625259422a9d25d9be5" +checksum = "470252db18ecc35fd766c0891b1e3ec6cbbcd62507e85276c01bf75d8e94d4a1" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -1709,9 +1719,9 @@ checksum = "a037eddb7d28de1d0fc42411f501b53b75838d313908078d6698d064f3029b24" [[package]] name = "js-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" dependencies = [ "once_cell", "wasm-bindgen", @@ -1792,19 +1802,18 @@ checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "libredox" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" dependencies = [ - "bitflags 2.11.0", "libc", ] [[package]] name = "linux-raw-sys" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" @@ -2141,7 +2150,7 @@ dependencies = [ "pest_meta", "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2156,9 +2165,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pin-utils" @@ -2269,7 +2278,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2 1.0.106", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2319,7 +2328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" dependencies = [ "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -2650,9 +2659,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" @@ -2814,9 +2823,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ "bitflags 2.11.0", "errno", @@ -2827,9 +2836,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.36" +version = "0.23.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "aws-lc-rs", "once_cell", @@ -2944,9 +2953,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "3.6.0" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d17b898a6d6948c3a8ee4372c17cb384f90d2e6e912ef00895b14fd7ab54ec38" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ "bitflags 2.11.0", "core-foundation", @@ -2957,9 +2966,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.16.0" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321c8673b092a9a42605034a9879d73cb79101ed5fd117bc9a597b89b4e9e61a" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ "core-foundation-sys", "libc", @@ -3023,7 +3032,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3250,7 +3259,7 @@ dependencies = [ "heck", "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3272,9 +3281,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.116" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df424c70518695237746f84cede799c9c58fcb37450d7b23716568cc8bc69cb" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", @@ -3298,14 +3307,14 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] name = "tempfile" -version = "3.25.0" +version = "3.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" +checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0" dependencies = [ "fastrand", "getrandom 0.4.1", @@ -3358,7 +3367,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3369,7 +3378,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3508,7 +3517,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -3944,9 +3953,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" dependencies = [ "cfg-if 1.0.4", "once_cell", @@ -3957,9 +3966,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.58" +version = "0.4.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a6e77fd0ae8029c9ea0063f87c46fde723e7d887703d74ad2616d792e51e6f" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" dependencies = [ "cfg-if 1.0.4", "futures-util", @@ -3971,9 +3980,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" dependencies = [ "quote 1.0.44", "wasm-bindgen-macro-support", @@ -3981,22 +3990,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" dependencies = [ "bumpalo", "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.108" +version = "0.2.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" dependencies = [ "unicode-ident", ] @@ -4037,9 +4046,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.85" +version = "0.3.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312e32e551d92129218ea9a2452120f4aabc03529ef03e4d0d82fb2780608598" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" dependencies = [ "js-sys", "wasm-bindgen", @@ -4405,7 +4414,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.116", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -4421,7 +4430,7 @@ dependencies = [ "prettyplease", "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -4520,28 +4529,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.39" +version = "0.8.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" +checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.39" +version = "0.8.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" +checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] @@ -4561,7 +4570,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", "synstructure", ] @@ -4601,7 +4610,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2 1.0.106", "quote 1.0.44", - "syn 2.0.116", + "syn 2.0.117", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2c433e30..3be401ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ rbx_reflection = { path = "rbx-dom/rbx_reflection" } rbx_reflection_database = { path = "rbx-dom/rbx_reflection_database" } rbx_xml = { path = "rbx-dom/rbx_xml" } -anyhow = "1.0.101" +anyhow = "1.0.102" backtrace = "0.3.76" bincode = { version = "2", features = ["serde"] } crossbeam-channel = "0.5.15" @@ -86,7 +86,7 @@ reqwest = { version = "0.13", default-features = false, features = [ "brotli", "deflate", ] } -tempfile = "3.25.0" +tempfile = "3.26.0" ritz = "0.1.0" roblox_install = "1.0.0" serde = { version = "1.0.228", features = ["derive", "rc"] } @@ -100,6 +100,7 @@ thiserror = "2" tokio = { version = "1.49.0", features = ["rt", "rt-multi-thread", "macros", "sync"] } uuid = { version = "1.21.0", features = ["v4", "serde"] } clap = { version = "4", features = ["derive"] } +clap_complete = "4" profiling = "1.0.17" yaml-rust2 = "0.11.0" data-encoding = "2.10.0" @@ -118,7 +119,7 @@ winreg = "0.55" memofs = { version = "0.3.0", path = "crates/memofs" } embed-resource = "3.0.6" -anyhow = "1.0.101" +anyhow = "1.0.102" bincode = { version = "2", features = ["serde"] } fs-err = "3" maplit = "1.0.2" diff --git a/TODO.txt b/TODO.txt index 01e57f2a..a5a1d78f 100644 --- a/TODO.txt +++ b/TODO.txt @@ -7,6 +7,7 @@ suffix version for beta [mcp] * atlas_sync + - Basically equiv to git fast-forward merge - Invokes Atlas sync from Roblox - If there are NO unselected items in the tree (e.g. all were automatically selected), it just automatically hits accept - Does nothing if we are running in connected-mode (already syncing) @@ -86,8 +87,7 @@ ensure that live-syncback respects the syncback configuration fully if descriptor.dataType == "Ref" then return end I thought we were supposed to generate a uid and then send that table to the server so it can resolve those based on like a client uid? -[cli] -make console tabbing support work +[cli inspection] we should make commands for inspecting .rbxl and .rbxm files for ai agents even inspecting ones from the website directly could we find an endpoint for downloading the "client side" of any game on the platform for context? @@ -338,3 +338,8 @@ make sure this is applied to plugin-based syncback, too. [git] I notice we actually use the git cli in a lot of places. is there a git library we can use instead? + +[cli] +make console tabbing support work +when i say console tabbing, like i can type "git c" and it will recommend "git checkout" +is there a rust crate to accomplish this? can we enable it on our current argument parser library being used? diff --git a/crates/memofs/Cargo.toml b/crates/memofs/Cargo.toml index 324e32a4..1eb76ec5 100644 --- a/crates/memofs/Cargo.toml +++ b/crates/memofs/Cargo.toml @@ -28,4 +28,4 @@ notify = { version = "8.2", features = ["macos_kqueue"] } notify = "8.2" [dev-dependencies] -tempfile = "3.25.0" +tempfile = "3.26.0" diff --git a/src/cli/completions.rs b/src/cli/completions.rs new file mode 100644 index 00000000..af5a5bfc --- /dev/null +++ b/src/cli/completions.rs @@ -0,0 +1,21 @@ +use std::io; + +use clap::Parser; +use clap_complete::{generate, Shell}; + +use super::Options; + +#[derive(Debug, Parser)] +pub struct CompletionsCommand { + /// Shell to generate completions for. + #[clap(value_enum)] + pub shell: Shell, +} + +impl CompletionsCommand { + pub fn run(self) -> anyhow::Result<()> { + let mut cmd = ::command(); + generate(self.shell, &mut cmd, "atlas", &mut io::stdout()); + Ok(()) + } +} diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 708d1278..109480cc 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -2,6 +2,7 @@ mod build; mod clone; +mod completions; mod cursor; mod doc; mod fmt_project; @@ -20,6 +21,7 @@ use thiserror::Error; pub use self::build::BuildCommand; pub use self::clone::CloneCommand; +pub use self::completions::CompletionsCommand; pub use self::cursor::CursorCommand; pub use self::doc::DocCommand; pub use self::fmt_project::FmtProjectCommand; @@ -47,6 +49,7 @@ impl Options { pub fn run(self) -> anyhow::Result<()> { match self.subcommand { Subcommand::Clone(subcommand) => subcommand.run(self.global), + Subcommand::Completions(subcommand) => subcommand.run(), Subcommand::Init(subcommand) => subcommand.run(), Subcommand::Serve(subcommand) => subcommand.run(), Subcommand::Build(subcommand) => subcommand.run(), @@ -126,6 +129,7 @@ pub struct ColorChoiceParseError { #[derive(Debug, Parser)] pub enum Subcommand { Clone(CloneCommand), + Completions(CompletionsCommand), Init(InitCommand), Serve(ServeCommand), Build(BuildCommand),