From f833fa6c7880376cb5ffe90f4d154368be04517e Mon Sep 17 00:00:00 2001 From: Rui Chen Date: Fri, 20 Dec 2024 16:54:03 -0500 Subject: [PATCH] asak: add upstream manpages and shell completions patch Signed-off-by: Rui Chen --- asak/0.3.3-clap-update.patch | 1872 ++++++++++++++++++++++++++++++++++ 1 file changed, 1872 insertions(+) create mode 100644 asak/0.3.3-clap-update.patch diff --git a/asak/0.3.3-clap-update.patch b/asak/0.3.3-clap-update.patch new file mode 100644 index 00000000..c49a1a30 --- /dev/null +++ b/asak/0.3.3-clap-update.patch @@ -0,0 +1,1872 @@ +From 3a18a3f09c7d9fe0fccc35cd0497f2720ff8aca0 Mon Sep 17 00:00:00 2001 +From: Rui Chen +Date: Fri, 20 Dec 2024 16:49:29 -0500 +Subject: [PATCH] feat: add man pages and shell completions + +Signed-off-by: Rui Chen +--- + Cargo.lock | 719 +++++++++++++++++++++++++++------------------------- + Cargo.toml | 5 + + build.rs | 49 ++++ + src/cli.rs | 61 +++++ + src/main.rs | 63 +---- + 5 files changed, 492 insertions(+), 405 deletions(-) + create mode 100644 build.rs + create mode 100644 src/cli.rs + +diff --git a/Cargo.lock b/Cargo.lock +index 3815db3..f802638 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -1,44 +1,32 @@ + # This file is automatically @generated by Cargo. + # It is not intended for manual editing. +-version = 3 +- +-[[package]] +-name = "ahash" +-version = "0.8.9" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +-dependencies = [ +- "cfg-if", +- "once_cell", +- "version_check", +- "zerocopy", +-] ++version = 4 + + [[package]] + name = "aho-corasick" +-version = "1.1.2" ++version = "1.1.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" ++checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" + dependencies = [ + "memchr", + ] + + [[package]] + name = "allocator-api2" +-version = "0.2.16" ++version = "0.2.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" ++checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + + [[package]] + name = "alsa" +-version = "0.7.1" ++version = "0.9.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2562ad8dcf0f789f65c6fdaad8a8a9708ed6b488e649da28c01656ad66b8b47" ++checksum = "ed7572b7ba83a31e20d1b48970ee402d2e3e0537dcfe0a3ff4d6eb7508617d43" + dependencies = [ + "alsa-sys", +- "bitflags 1.3.2", ++ "bitflags 2.6.0", ++ "cfg-if", + "libc", +- "nix", + ] + + [[package]] +@@ -68,57 +56,58 @@ dependencies = [ + + [[package]] + name = "anstream" +-version = "0.6.12" ++version = "0.6.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540" ++checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" + dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", ++ "is_terminal_polyfill", + "utf8parse", + ] + + [[package]] + name = "anstyle" +-version = "1.0.6" ++version = "1.0.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" ++checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + + [[package]] + name = "anstyle-parse" +-version = "0.2.3" ++version = "0.2.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" ++checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" + dependencies = [ + "utf8parse", + ] + + [[package]] + name = "anstyle-query" +-version = "1.0.2" ++version = "1.1.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" ++checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" + dependencies = [ +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "anstyle-wincon" +-version = "3.0.2" ++version = "3.0.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" ++checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" + dependencies = [ + "anstyle", +- "windows-sys 0.52.0", ++ "windows-sys 0.59.0", + ] + + [[package]] + name = "anyhow" +-version = "1.0.80" ++version = "1.0.94" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" ++checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" + + [[package]] + name = "asak" +@@ -127,6 +116,8 @@ dependencies = [ + "anyhow", + "chrono", + "clap", ++ "clap_complete", ++ "clap_mangen", + "cpal", + "crossbeam", + "crossterm 0.27.0", +@@ -143,28 +134,26 @@ dependencies = [ + + [[package]] + name = "autocfg" +-version = "1.1.0" ++version = "1.4.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" ++checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + + [[package]] + name = "bindgen" +-version = "0.69.4" ++version = "0.70.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" ++checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" + dependencies = [ +- "bitflags 2.4.2", ++ "bitflags 2.6.0", + "cexpr", + "clang-sys", +- "itertools", +- "lazy_static", +- "lazycell", ++ "itertools 0.13.0", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", +- "syn 2.0.49", ++ "syn", + ] + + [[package]] +@@ -175,15 +164,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + + [[package]] + name = "bitflags" +-version = "2.4.2" ++version = "2.6.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" ++checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + + [[package]] + name = "bumpalo" +-version = "3.15.0" ++version = "3.16.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" ++checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + + [[package]] + name = "byteorder" +@@ -193,9 +182,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + + [[package]] + name = "bytes" +-version = "1.5.0" ++version = "1.9.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" ++checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + + [[package]] + name = "cassowary" +@@ -205,21 +194,22 @@ checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + + [[package]] + name = "castaway" +-version = "0.2.2" ++version = "0.2.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" ++checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" + dependencies = [ + "rustversion", + ] + + [[package]] + name = "cc" +-version = "1.0.83" ++version = "1.2.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" ++checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" + dependencies = [ + "jobserver", + "libc", ++ "shlex", + ] + + [[package]] +@@ -245,34 +235,34 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + + [[package]] + name = "chrono" +-version = "0.4.35" ++version = "0.4.39" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" ++checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" + dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", +- "windows-targets 0.52.0", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "clang-sys" +-version = "1.7.0" ++version = "1.8.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" ++checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" + dependencies = [ + "glob", + "libc", +- "libloading 0.8.1", ++ "libloading 0.8.6", + ] + + [[package]] + name = "clap" +-version = "4.5.1" ++version = "4.5.23" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" ++checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" + dependencies = [ + "clap_builder", + "clap_derive", +@@ -280,9 +270,9 @@ dependencies = [ + + [[package]] + name = "clap_builder" +-version = "4.5.1" ++version = "4.5.23" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" ++checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" + dependencies = [ + "anstream", + "anstyle", +@@ -290,35 +280,54 @@ dependencies = [ + "strsim", + ] + ++[[package]] ++name = "clap_complete" ++version = "4.5.40" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "ac2e663e3e3bed2d32d065a8404024dad306e699a04263ec59919529f803aee9" ++dependencies = [ ++ "clap", ++] ++ + [[package]] + name = "clap_derive" +-version = "4.5.0" ++version = "4.5.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" ++checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" + dependencies = [ + "heck", + "proc-macro2", + "quote", +- "syn 2.0.49", ++ "syn", + ] + + [[package]] + name = "clap_lex" +-version = "0.7.0" ++version = "0.7.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" ++checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" ++ ++[[package]] ++name = "clap_mangen" ++version = "0.2.24" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" ++dependencies = [ ++ "clap", ++ "roff", ++] + + [[package]] + name = "colorchoice" +-version = "1.0.0" ++version = "1.0.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" ++checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + + [[package]] + name = "combine" +-version = "4.6.6" ++version = "4.6.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" ++checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" + dependencies = [ + "bytes", + "memchr", +@@ -339,9 +348,9 @@ dependencies = [ + + [[package]] + name = "core-foundation-sys" +-version = "0.8.6" ++version = "0.8.7" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" ++checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + + [[package]] + name = "coreaudio-rs" +@@ -356,33 +365,31 @@ dependencies = [ + + [[package]] + name = "coreaudio-sys" +-version = "0.2.15" ++version = "0.2.16" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" ++checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" + dependencies = [ + "bindgen", + ] + + [[package]] + name = "cpal" +-version = "0.15.2" ++version = "0.15.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "6d959d90e938c5493000514b446987c07aed46c668faaa7d34d6c7a67b1a578c" ++checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" + dependencies = [ + "alsa", + "core-foundation-sys", + "coreaudio-rs", + "dasp_sample", + "jack", +- "jni 0.19.0", ++ "jni", + "js-sys", + "libc", + "mach2", + "ndk", + "ndk-context", + "oboe", +- "once_cell", +- "parking_lot", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +@@ -404,18 +411,18 @@ dependencies = [ + + [[package]] + name = "crossbeam-channel" +-version = "0.5.13" ++version = "0.5.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" ++checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" + dependencies = [ + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-deque" +-version = "0.8.5" ++version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" ++checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" + dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +@@ -432,18 +439,18 @@ dependencies = [ + + [[package]] + name = "crossbeam-queue" +-version = "0.3.11" ++version = "0.3.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" ++checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" + dependencies = [ + "crossbeam-utils", + ] + + [[package]] + name = "crossbeam-utils" +-version = "0.8.20" ++version = "0.8.21" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" ++checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + + [[package]] + name = "crossterm" +@@ -467,7 +474,7 @@ version = "0.27.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" + dependencies = [ +- "bitflags 2.4.2", ++ "bitflags 2.6.0", + "crossterm_winapi", + "libc", + "mio", +@@ -585,9 +592,9 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + + [[package]] + name = "either" +-version = "1.10.0" ++version = "1.13.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" ++checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + + [[package]] + name = "equivalent" +@@ -595,6 +602,12 @@ version = "1.0.1" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + ++[[package]] ++name = "foldhash" ++version = "0.1.4" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" ++ + [[package]] + name = "fuzzy-matcher" + version = "0.3.7" +@@ -615,9 +628,9 @@ dependencies = [ + + [[package]] + name = "getrandom" +-version = "0.2.12" ++version = "0.2.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" ++checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" + dependencies = [ + "cfg-if", + "libc", +@@ -632,19 +645,20 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + + [[package]] + name = "hashbrown" +-version = "0.14.3" ++version = "0.15.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" ++checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + dependencies = [ +- "ahash", + "allocator-api2", ++ "equivalent", ++ "foldhash", + ] + + [[package]] + name = "heck" +-version = "0.4.1" ++version = "0.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" ++checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + + [[package]] + name = "hound" +@@ -654,16 +668,16 @@ checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" + + [[package]] + name = "iana-time-zone" +-version = "0.1.60" ++version = "0.1.61" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" ++checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" + dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", +- "windows-core", ++ "windows-core 0.52.0", + ] + + [[package]] +@@ -677,27 +691,21 @@ dependencies = [ + + [[package]] + name = "indexmap" +-version = "2.2.3" ++version = "2.7.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" ++checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" + dependencies = [ + "equivalent", + "hashbrown", + ] + +-[[package]] +-name = "indoc" +-version = "2.0.4" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +- + [[package]] + name = "inquire" +-version = "0.7.4" ++version = "0.7.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fe95f33091b9b7b517a5849bce4dce1b550b430fc20d58059fcaa319ed895d8b" ++checksum = "0fddf93031af70e75410a2511ec04d49e758ed2f26dad3404a934e0fb45cc12a" + dependencies = [ +- "bitflags 2.4.2", ++ "bitflags 2.6.0", + "crossterm 0.25.0", + "dyn-clone", + "fuzzy-matcher", +@@ -708,6 +716,12 @@ dependencies = [ + "unicode-width", + ] + ++[[package]] ++name = "is_terminal_polyfill" ++version = "1.70.1" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" ++ + [[package]] + name = "itertools" + version = "0.12.1" +@@ -717,11 +731,20 @@ dependencies = [ + "either", + ] + ++[[package]] ++name = "itertools" ++version = "0.13.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" ++dependencies = [ ++ "either", ++] ++ + [[package]] + name = "itoa" +-version = "1.0.10" ++version = "1.0.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" ++checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + + [[package]] + name = "jack" +@@ -752,30 +775,18 @@ dependencies = [ + + [[package]] + name = "jni" +-version = "0.19.0" ++version = "0.21.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +-dependencies = [ +- "cesu8", +- "combine", +- "jni-sys", +- "log", +- "thiserror", +- "walkdir", +-] +- +-[[package]] +-name = "jni" +-version = "0.20.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" ++checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" + dependencies = [ + "cesu8", ++ "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", ++ "windows-sys 0.45.0", + ] + + [[package]] +@@ -786,39 +797,34 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + + [[package]] + name = "jobserver" +-version = "0.1.28" ++version = "0.1.32" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" ++checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" + dependencies = [ + "libc", + ] + + [[package]] + name = "js-sys" +-version = "0.3.68" ++version = "0.3.76" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" ++checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" + dependencies = [ ++ "once_cell", + "wasm-bindgen", + ] + + [[package]] + name = "lazy_static" +-version = "1.4.0" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +- +-[[package]] +-name = "lazycell" +-version = "1.3.0" ++version = "1.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" ++checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + + [[package]] + name = "libc" +-version = "0.2.153" ++version = "0.2.169" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" ++checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + + [[package]] + name = "libloading" +@@ -832,19 +838,19 @@ dependencies = [ + + [[package]] + name = "libloading" +-version = "0.8.1" ++version = "0.8.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" ++checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" + dependencies = [ + "cfg-if", +- "windows-sys 0.48.0", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "lock_api" +-version = "0.4.11" ++version = "0.4.12" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" ++checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" + dependencies = [ + "autocfg", + "scopeguard", +@@ -852,15 +858,15 @@ dependencies = [ + + [[package]] + name = "log" +-version = "0.4.20" ++version = "0.4.22" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" ++checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + + [[package]] + name = "lru" +-version = "0.12.2" ++version = "0.12.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "db2c024b41519440580066ba82aab04092b333e09066a5eb86c7c4890df31f22" ++checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" + dependencies = [ + "hashbrown", + ] +@@ -876,9 +882,9 @@ dependencies = [ + + [[package]] + name = "memchr" +-version = "2.7.1" ++version = "2.7.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" ++checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + + [[package]] + name = "minimal-lexical" +@@ -888,9 +894,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + + [[package]] + name = "mio" +-version = "0.8.10" ++version = "0.8.11" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" ++checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" + dependencies = [ + "libc", + "log", +@@ -900,15 +906,15 @@ dependencies = [ + + [[package]] + name = "ndk" +-version = "0.7.0" ++version = "0.8.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" ++checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" + dependencies = [ +- "bitflags 1.3.2", ++ "bitflags 2.6.0", + "jni-sys", ++ "log", + "ndk-sys", + "num_enum", +- "raw-window-handle", + "thiserror", + ] + +@@ -920,9 +926,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + + [[package]] + name = "ndk-sys" +-version = "0.4.1+23.1.7779620" ++version = "0.5.0+25.2.9519653" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" ++checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" + dependencies = [ + "jni-sys", + ] +@@ -936,17 +942,6 @@ dependencies = [ + "unicode-segmentation", + ] + +-[[package]] +-name = "nix" +-version = "0.24.3" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +-dependencies = [ +- "bitflags 1.3.2", +- "cfg-if", +- "libc", +-] +- + [[package]] + name = "nom" + version = "7.1.3" +@@ -959,52 +954,52 @@ dependencies = [ + + [[package]] + name = "num-derive" +-version = "0.3.3" ++version = "0.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" ++checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" + dependencies = [ + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn", + ] + + [[package]] + name = "num-traits" +-version = "0.2.18" ++version = "0.2.19" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" ++checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" + dependencies = [ + "autocfg", + ] + + [[package]] + name = "num_enum" +-version = "0.5.11" ++version = "0.7.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" ++checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" + dependencies = [ + "num_enum_derive", + ] + + [[package]] + name = "num_enum_derive" +-version = "0.5.11" ++version = "0.7.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" ++checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" + dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", +- "syn 1.0.109", ++ "syn", + ] + + [[package]] + name = "oboe" +-version = "0.5.0" ++version = "0.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8868cc237ee02e2d9618539a23a8d228b9bb3fc2e7a5b11eed3831de77c395d0" ++checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" + dependencies = [ +- "jni 0.20.0", ++ "jni", + "ndk", + "ndk-context", + "num-derive", +@@ -1014,24 +1009,24 @@ dependencies = [ + + [[package]] + name = "oboe-sys" +-version = "0.5.0" ++version = "0.6.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7f44155e7fb718d3cfddcf70690b2b51ac4412f347cd9e4fbe511abe9cd7b5f2" ++checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" + dependencies = [ + "cc", + ] + + [[package]] + name = "once_cell" +-version = "1.19.0" ++version = "1.20.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" ++checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + + [[package]] + name = "parking_lot" +-version = "0.12.1" ++version = "0.12.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" ++checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" + dependencies = [ + "lock_api", + "parking_lot_core", +@@ -1039,59 +1034,61 @@ dependencies = [ + + [[package]] + name = "parking_lot_core" +-version = "0.9.9" ++version = "0.9.10" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" ++checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" + dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", +- "windows-targets 0.48.5", ++ "windows-targets 0.52.6", + ] + + [[package]] + name = "paste" +-version = "1.0.14" ++version = "1.0.15" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" ++checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + + [[package]] + name = "pkg-config" +-version = "0.3.30" ++version = "0.3.31" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" ++checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + + [[package]] + name = "ppv-lite86" +-version = "0.2.17" ++version = "0.2.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" ++checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" ++dependencies = [ ++ "zerocopy", ++] + + [[package]] + name = "proc-macro-crate" +-version = "1.3.1" ++version = "3.2.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" ++checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" + dependencies = [ +- "once_cell", + "toml_edit", + ] + + [[package]] + name = "proc-macro2" +-version = "1.0.78" ++version = "1.0.92" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" ++checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" + dependencies = [ + "unicode-ident", + ] + + [[package]] + name = "quote" +-version = "1.0.35" ++version = "1.0.37" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" ++checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" + dependencies = [ + "proc-macro2", + ] +@@ -1128,44 +1125,38 @@ dependencies = [ + + [[package]] + name = "ratatui" +-version = "0.26.1" ++version = "0.26.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bcb12f8fbf6c62614b0d56eb352af54f6a22410c3b079eb53ee93c7b97dd31d8" ++checksum = "f44c9e68fd46eda15c646fbb85e1040b657a58cdc8c98db1d97a55930d991eef" + dependencies = [ +- "bitflags 2.4.2", ++ "bitflags 2.6.0", + "cassowary", + "compact_str", + "crossterm 0.27.0", +- "indoc", +- "itertools", ++ "itertools 0.12.1", + "lru", + "paste", + "stability", + "strum", + "unicode-segmentation", ++ "unicode-truncate", + "unicode-width", + ] + +-[[package]] +-name = "raw-window-handle" +-version = "0.5.2" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +- + [[package]] + name = "redox_syscall" +-version = "0.4.1" ++version = "0.5.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" ++checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" + dependencies = [ +- "bitflags 1.3.2", ++ "bitflags 2.6.0", + ] + + [[package]] + name = "regex" +-version = "1.10.3" ++version = "1.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" ++checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" + dependencies = [ + "aho-corasick", + "memchr", +@@ -1175,9 +1166,9 @@ dependencies = [ + + [[package]] + name = "regex-automata" +-version = "0.4.5" ++version = "0.4.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" ++checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" + dependencies = [ + "aho-corasick", + "memchr", +@@ -1186,9 +1177,15 @@ dependencies = [ + + [[package]] + name = "regex-syntax" +-version = "0.8.2" ++version = "0.8.5" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" ++checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" ++ ++[[package]] ++name = "roff" ++version = "0.2.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" + + [[package]] + name = "rustc-hash" +@@ -1198,15 +1195,15 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + + [[package]] + name = "rustversion" +-version = "1.0.14" ++version = "1.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" ++checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" + + [[package]] + name = "ryu" +-version = "1.0.17" ++version = "1.0.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" ++checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + + [[package]] + name = "same-file" +@@ -1241,9 +1238,9 @@ dependencies = [ + + [[package]] + name = "signal-hook-mio" +-version = "0.2.3" ++version = "0.2.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" ++checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" + dependencies = [ + "libc", + "mio", +@@ -1252,27 +1249,27 @@ dependencies = [ + + [[package]] + name = "signal-hook-registry" +-version = "1.4.1" ++version = "1.4.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" ++checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" + dependencies = [ + "libc", + ] + + [[package]] + name = "smallvec" +-version = "1.13.1" ++version = "1.13.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" ++checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + + [[package]] + name = "stability" +-version = "0.1.1" ++version = "0.2.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ebd1b177894da2a2d9120208c3386066af06a488255caabc5de8ddca22dbc3ce" ++checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" + dependencies = [ + "quote", +- "syn 1.0.109", ++ "syn", + ] + + [[package]] +@@ -1283,48 +1280,37 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + + [[package]] + name = "strsim" +-version = "0.11.0" ++version = "0.11.1" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" ++checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + + [[package]] + name = "strum" +-version = "0.26.1" ++version = "0.26.3" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "723b93e8addf9aa965ebe2d11da6d7540fa2283fcea14b3371ff055f7ba13f5f" ++checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" + dependencies = [ + "strum_macros", + ] + + [[package]] + name = "strum_macros" +-version = "0.26.1" ++version = "0.26.4" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" ++checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" + dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", +- "syn 2.0.49", ++ "syn", + ] + + [[package]] + name = "syn" +-version = "1.0.109" ++version = "2.0.90" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +-dependencies = [ +- "proc-macro2", +- "quote", +- "unicode-ident", +-] +- +-[[package]] +-name = "syn" +-version = "2.0.49" +-source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" ++checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" + dependencies = [ + "proc-macro2", + "quote", +@@ -1333,22 +1319,22 @@ dependencies = [ + + [[package]] + name = "thiserror" +-version = "1.0.57" ++version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" ++checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" + dependencies = [ + "thiserror-impl", + ] + + [[package]] + name = "thiserror-impl" +-version = "1.0.57" ++version = "1.0.69" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" ++checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.49", ++ "syn", + ] + + [[package]] +@@ -1363,15 +1349,15 @@ dependencies = [ + + [[package]] + name = "toml_datetime" +-version = "0.6.5" ++version = "0.6.8" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" ++checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + + [[package]] + name = "toml_edit" +-version = "0.19.15" ++version = "0.22.22" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" ++checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" + dependencies = [ + "indexmap", + "toml_datetime", +@@ -1380,39 +1366,44 @@ dependencies = [ + + [[package]] + name = "unicode-ident" +-version = "1.0.12" ++version = "1.0.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" ++checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + + [[package]] + name = "unicode-segmentation" +-version = "1.11.0" ++version = "1.12.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" ++checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + + [[package]] +-name = "unicode-width" +-version = "0.1.11" ++name = "unicode-truncate" ++version = "1.1.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" ++checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" ++dependencies = [ ++ "itertools 0.13.0", ++ "unicode-segmentation", ++ "unicode-width", ++] + + [[package]] +-name = "utf8parse" +-version = "0.2.1" ++name = "unicode-width" ++version = "0.1.14" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" ++checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + + [[package]] +-name = "version_check" +-version = "0.9.4" ++name = "utf8parse" ++version = "0.2.2" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" ++checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + + [[package]] + name = "walkdir" +-version = "2.4.0" ++version = "2.5.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" ++checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" + dependencies = [ + "same-file", + "winapi-util", +@@ -1426,46 +1417,47 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + + [[package]] + name = "wasm-bindgen" +-version = "0.2.91" ++version = "0.2.99" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" ++checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" + dependencies = [ + "cfg-if", ++ "once_cell", + "wasm-bindgen-macro", + ] + + [[package]] + name = "wasm-bindgen-backend" +-version = "0.2.91" ++version = "0.2.99" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" ++checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" + dependencies = [ + "bumpalo", + "log", +- "once_cell", + "proc-macro2", + "quote", +- "syn 2.0.49", ++ "syn", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-futures" +-version = "0.4.41" ++version = "0.4.49" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" ++checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" + dependencies = [ + "cfg-if", + "js-sys", ++ "once_cell", + "wasm-bindgen", + "web-sys", + ] + + [[package]] + name = "wasm-bindgen-macro" +-version = "0.2.91" ++version = "0.2.99" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" ++checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" + dependencies = [ + "quote", + "wasm-bindgen-macro-support", +@@ -1473,28 +1465,28 @@ dependencies = [ + + [[package]] + name = "wasm-bindgen-macro-support" +-version = "0.2.91" ++version = "0.2.99" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" ++checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.49", ++ "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", + ] + + [[package]] + name = "wasm-bindgen-shared" +-version = "0.2.91" ++version = "0.2.99" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" ++checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" + + [[package]] + name = "web-sys" +-version = "0.3.68" ++version = "0.3.76" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" ++checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" + dependencies = [ + "js-sys", + "wasm-bindgen", +@@ -1518,11 +1510,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + + [[package]] + name = "winapi-util" +-version = "0.1.6" ++version = "0.1.9" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" ++checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" + dependencies = [ +- "winapi", ++ "windows-sys 0.59.0", + ] + + [[package]] +@@ -1533,11 +1525,12 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + + [[package]] + name = "windows" +-version = "0.46.0" ++version = "0.54.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cdacb41e6a96a052c6cb63a144f24900236121c6f63f4f8219fef5977ecb0c25" ++checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" + dependencies = [ +- "windows-targets 0.42.2", ++ "windows-core 0.54.0", ++ "windows-targets 0.52.6", + ] + + [[package]] +@@ -1546,7 +1539,35 @@ version = "0.52.0" + source = "registry+https://github.com/rust-lang/crates.io-index" + checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" + dependencies = [ +- "windows-targets 0.52.0", ++ "windows-targets 0.52.6", ++] ++ ++[[package]] ++name = "windows-core" ++version = "0.54.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" ++dependencies = [ ++ "windows-result", ++ "windows-targets 0.52.6", ++] ++ ++[[package]] ++name = "windows-result" ++version = "0.1.2" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" ++dependencies = [ ++ "windows-targets 0.52.6", ++] ++ ++[[package]] ++name = "windows-sys" ++version = "0.45.0" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" ++dependencies = [ ++ "windows-targets 0.42.2", + ] + + [[package]] +@@ -1560,11 +1581,11 @@ dependencies = [ + + [[package]] + name = "windows-sys" +-version = "0.52.0" ++version = "0.59.0" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" ++checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" + dependencies = [ +- "windows-targets 0.52.0", ++ "windows-targets 0.52.6", + ] + + [[package]] +@@ -1599,17 +1620,18 @@ dependencies = [ + + [[package]] + name = "windows-targets" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" ++checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" + dependencies = [ +- "windows_aarch64_gnullvm 0.52.0", +- "windows_aarch64_msvc 0.52.0", +- "windows_i686_gnu 0.52.0", +- "windows_i686_msvc 0.52.0", +- "windows_x86_64_gnu 0.52.0", +- "windows_x86_64_gnullvm 0.52.0", +- "windows_x86_64_msvc 0.52.0", ++ "windows_aarch64_gnullvm 0.52.6", ++ "windows_aarch64_msvc 0.52.6", ++ "windows_i686_gnu 0.52.6", ++ "windows_i686_gnullvm", ++ "windows_i686_msvc 0.52.6", ++ "windows_x86_64_gnu 0.52.6", ++ "windows_x86_64_gnullvm 0.52.6", ++ "windows_x86_64_msvc 0.52.6", + ] + + [[package]] +@@ -1626,9 +1648,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + + [[package]] + name = "windows_aarch64_gnullvm" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" ++checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + + [[package]] + name = "windows_aarch64_msvc" +@@ -1644,9 +1666,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + + [[package]] + name = "windows_aarch64_msvc" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" ++checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + + [[package]] + name = "windows_i686_gnu" +@@ -1662,9 +1684,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + + [[package]] + name = "windows_i686_gnu" +-version = "0.52.0" ++version = "0.52.6" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" ++ ++[[package]] ++name = "windows_i686_gnullvm" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" ++checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + + [[package]] + name = "windows_i686_msvc" +@@ -1680,9 +1708,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + + [[package]] + name = "windows_i686_msvc" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" ++checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + + [[package]] + name = "windows_x86_64_gnu" +@@ -1698,9 +1726,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + + [[package]] + name = "windows_x86_64_gnu" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" ++checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + + [[package]] + name = "windows_x86_64_gnullvm" +@@ -1716,9 +1744,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + + [[package]] + name = "windows_x86_64_gnullvm" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" ++checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + + [[package]] + name = "windows_x86_64_msvc" +@@ -1734,35 +1762,36 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + + [[package]] + name = "windows_x86_64_msvc" +-version = "0.52.0" ++version = "0.52.6" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" ++checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + + [[package]] + name = "winnow" +-version = "0.5.40" ++version = "0.6.20" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" ++checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" + dependencies = [ + "memchr", + ] + + [[package]] + name = "zerocopy" +-version = "0.7.32" ++version = "0.7.35" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" ++checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" + dependencies = [ ++ "byteorder", + "zerocopy-derive", + ] + + [[package]] + name = "zerocopy-derive" +-version = "0.7.32" ++version = "0.7.35" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" ++checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" + dependencies = [ + "proc-macro2", + "quote", +- "syn 2.0.49", ++ "syn", + ] +diff --git a/Cargo.toml b/Cargo.toml +index 6e12d7e..4e753f5 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -26,6 +26,11 @@ rand = "0.8.5" + ratatui = "0.26.1" + smallvec = "1.13.1" + ++[build-dependencies] ++clap = { version = "4.5.4", features = ["derive"] } ++clap_complete = "4.5.2" ++clap_mangen = "0.2.20" ++ + [features] + default = ["cpal"] + jack = ["cpal/jack"] +diff --git a/build.rs b/build.rs +new file mode 100644 +index 0000000..18e4fcc +--- /dev/null ++++ b/build.rs +@@ -0,0 +1,49 @@ ++include!("src/cli.rs"); ++ ++use clap::Command; ++use clap::CommandFactory; ++use clap_complete::generate_to; ++use clap_complete::Shell::{Bash, Fish, Zsh}; ++use clap_mangen::Man; ++use std::fs; ++use std::path::PathBuf; ++ ++static NAME: &str = "asak"; ++ ++fn generate_man_pages(cmd: Command) { ++ let man_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("target/man"); ++ let mut buffer = Vec::default(); ++ ++ Man::new(cmd.clone()).render(&mut buffer).unwrap(); ++ fs::create_dir_all(&man_dir).unwrap(); ++ fs::write(man_dir.join(NAME.to_owned() + ".1"), buffer).unwrap(); ++ ++ for subcommand in cmd.get_subcommands() { ++ let mut buffer = Vec::default(); ++ ++ Man::new(subcommand.clone()).render(&mut buffer).unwrap(); ++ fs::write( ++ man_dir.join(NAME.to_owned() + "-" + subcommand.get_name() + ".1"), ++ buffer, ++ ) ++ .unwrap(); ++ } ++} ++ ++fn generate_shell_completions(mut cmd: Command) { ++ let comp_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("target/completions"); ++ ++ fs::create_dir_all(&comp_dir).unwrap(); ++ ++ for shell in [Bash, Fish, Zsh] { ++ generate_to(shell, &mut cmd, NAME, &comp_dir).unwrap(); ++ } ++} ++ ++fn main() { ++ let mut cmd = Cli::command(); ++ cmd.set_bin_name(NAME); ++ ++ generate_man_pages(cmd.clone()); ++ generate_shell_completions(cmd); ++} +diff --git a/src/cli.rs b/src/cli.rs +new file mode 100644 +index 0000000..47ca49f +--- /dev/null ++++ b/src/cli.rs +@@ -0,0 +1,61 @@ ++use clap::{Args, Parser, Subcommand}; ++ ++/// Audio Swiss Army knife written in Rust. Like Sox but interactive with TUI. ++#[derive(Parser, Debug)] ++#[command(author, version, about, long_about = None)] ++pub struct Cli { ++ #[command(subcommand)] ++ pub command: Commands, ++ ++ /// The audio device to use ++ #[arg(short, long, default_value_t = String::from("default"))] ++ pub device: String, ++ ++ /// Use the JACK host ++ #[cfg(all( ++ any( ++ target_os = "linux", ++ target_os = "dragonfly", ++ target_os = "freebsd", ++ target_os = "netbsd" ++ ), ++ feature = "jack" ++ ))] ++ #[arg(short, long)] ++ #[allow(dead_code)] ++ pub jack: bool, ++} ++ ++#[derive(Debug, Subcommand)] ++pub enum Commands { ++ /// Record an audio file ++ Rec(RecArgs), ++ /// Play an audio file ++ Play(PlayArgs), ++ /// Monitor audio input with scopes ++ Monitor(MonitorArgs), ++} ++ ++/// Arguments used for the `rec` command ++#[derive(Args, Debug)] ++pub struct RecArgs { ++ /// Path for the output audio file, e.g. `output` ++ #[arg(required = false)] ++ pub output: Option, ++} ++ ++/// Arguments used for the `play` command ++#[derive(Args, Debug)] ++pub struct PlayArgs { ++ /// Path to the audio file to play; must be wav format for now, e.g. `input.wav` ++ #[arg(required = false)] ++ pub input: Option, ++} ++ ++/// Arguments used for the `monitor` command ++#[derive(Args, Debug)] ++pub struct MonitorArgs { ++ /// Buffer size for the audio input monitoring, defaults to 1024, the higher the value the more latency ++ #[arg(required = false, short, long)] ++ pub buffer_size: Option, ++} +diff --git a/src/main.rs b/src/main.rs +index a6a7641..4ce8eb5 100644 +--- a/src/main.rs ++++ b/src/main.rs +@@ -1,4 +1,4 @@ +-use clap::{Args, Parser, Subcommand}; ++use clap::Parser; + + mod record; + use inquire::{InquireError, Select, Text}; +@@ -10,65 +10,8 @@ use playback::play_audio; + mod monitor; + use monitor::start_monitoring; + +-/// Audio Swiss Army knife written in Rust. Like Sox but interative with TUI. +-#[derive(Parser, Debug)] +-#[command(author, version, about, long_about = None)] +-struct Cli { +- #[command(subcommand)] +- command: Commands, +- +- /// The audio device to use +- #[arg(short, long, default_value_t = String::from("default"))] +- device: String, +- +- /// Use the JACK host +- #[cfg(all( +- any( +- target_os = "linux", +- target_os = "dragonfly", +- target_os = "freebsd", +- target_os = "netbsd" +- ), +- feature = "jack" +- ))] +- #[arg(short, long)] +- #[allow(dead_code)] +- jack: bool, +-} +- +-#[derive(Debug, Subcommand)] +-enum Commands { +- /// Record an audio file +- Rec(RecArgs), +- /// Play an audio file +- Play(PlayArgs), +- /// Monitor audio input with scopes +- Monitor(MonitorArgs), +-} +- +-/// Arguments used for the `rec` command +-#[derive(Args, Debug)] +-struct RecArgs { +- /// Path for the output audio file, e.g. `output` +- #[arg(required = false)] +- output: Option, +-} +- +-/// Arguments used for the `play` command +-#[derive(Args, Debug)] +-struct PlayArgs { +- /// Path to the audio file to play; must be wav format for now, e.g. `input.wav` +- #[arg(required = false)] +- input: Option, +-} +- +-/// Arguments used for the `monitor` command +-#[derive(Args, Debug)] +-struct MonitorArgs { +- /// Buffer size for the audio input monitoring, defaults to 1024, the higher the value the more latency +- #[arg(required = false, short, long)] +- buffer_size: Option, +-} ++mod cli; ++use cli::{Cli, Commands}; + + fn main() { + let cli = Cli::parse(); +-- +2.47.1 +