feat: add console-subscriber feature
This commit is contained in:
		
							
								
								
									
										305
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										305
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @@ -178,6 +178,28 @@ dependencies = [ | ||||
|  "syn", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "async-stream" | ||||
| version = "0.3.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" | ||||
| dependencies = [ | ||||
|  "async-stream-impl", | ||||
|  "futures-core", | ||||
|  "pin-project-lite", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "async-stream-impl" | ||||
| version = "0.3.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "async-task" | ||||
| version = "4.7.1" | ||||
| @@ -195,12 +217,65 @@ dependencies = [ | ||||
|  "syn", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "atomic-waker" | ||||
| version = "1.1.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" | ||||
|  | ||||
| [[package]] | ||||
| name = "autocfg" | ||||
| version = "1.4.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" | ||||
|  | ||||
| [[package]] | ||||
| name = "axum" | ||||
| version = "0.7.9" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" | ||||
| dependencies = [ | ||||
|  "async-trait", | ||||
|  "axum-core", | ||||
|  "bytes", | ||||
|  "futures-util", | ||||
|  "http", | ||||
|  "http-body", | ||||
|  "http-body-util", | ||||
|  "itoa", | ||||
|  "matchit", | ||||
|  "memchr", | ||||
|  "mime", | ||||
|  "percent-encoding", | ||||
|  "pin-project-lite", | ||||
|  "rustversion", | ||||
|  "serde", | ||||
|  "sync_wrapper", | ||||
|  "tower 0.5.2", | ||||
|  "tower-layer", | ||||
|  "tower-service", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "axum-core" | ||||
| version = "0.4.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" | ||||
| dependencies = [ | ||||
|  "async-trait", | ||||
|  "bytes", | ||||
|  "futures-util", | ||||
|  "http", | ||||
|  "http-body", | ||||
|  "http-body-util", | ||||
|  "mime", | ||||
|  "pin-project-lite", | ||||
|  "rustversion", | ||||
|  "sync_wrapper", | ||||
|  "tower-layer", | ||||
|  "tower-service", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "azalea" | ||||
| version = "0.11.0+mc1.21.4" | ||||
| @@ -226,7 +301,7 @@ dependencies = [ | ||||
|  "derive_more 2.0.1", | ||||
|  "futures", | ||||
|  "futures-lite", | ||||
|  "indexmap", | ||||
|  "indexmap 2.7.1", | ||||
|  "nohash-hasher", | ||||
|  "num-format", | ||||
|  "num-traits", | ||||
| @@ -246,7 +321,7 @@ source = "git+https://github.com/azalea-rs/azalea.git#f8130c3c92946d2293634ba4e2 | ||||
| dependencies = [ | ||||
|  "azalea-buf", | ||||
|  "azalea-crypto", | ||||
|  "base64", | ||||
|  "base64 0.22.1", | ||||
|  "chrono", | ||||
|  "md-5", | ||||
|  "reqwest", | ||||
| @@ -370,7 +445,7 @@ dependencies = [ | ||||
|  "azalea-chat", | ||||
|  "azalea-registry", | ||||
|  "bevy_ecs", | ||||
|  "indexmap", | ||||
|  "indexmap 2.7.1", | ||||
|  "nohash-hasher", | ||||
|  "num-traits", | ||||
|  "serde", | ||||
| @@ -429,7 +504,7 @@ dependencies = [ | ||||
|  "azalea-core", | ||||
|  "azalea-inventory-macros", | ||||
|  "azalea-registry", | ||||
|  "indexmap", | ||||
|  "indexmap 2.7.1", | ||||
|  "simdnbt", | ||||
|  "tracing", | ||||
|  "uuid", | ||||
| @@ -571,6 +646,12 @@ dependencies = [ | ||||
|  "windows-targets", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "base64" | ||||
| version = "0.21.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" | ||||
|  | ||||
| [[package]] | ||||
| name = "base64" | ||||
| version = "0.22.1" | ||||
| @@ -978,6 +1059,45 @@ dependencies = [ | ||||
|  "crossbeam-utils", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "console-api" | ||||
| version = "0.8.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" | ||||
| dependencies = [ | ||||
|  "futures-core", | ||||
|  "prost", | ||||
|  "prost-types", | ||||
|  "tonic", | ||||
|  "tracing-core", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "console-subscriber" | ||||
| version = "0.4.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" | ||||
| dependencies = [ | ||||
|  "console-api", | ||||
|  "crossbeam-channel", | ||||
|  "crossbeam-utils", | ||||
|  "futures-task", | ||||
|  "hdrhistogram", | ||||
|  "humantime", | ||||
|  "hyper-util", | ||||
|  "prost", | ||||
|  "prost-types", | ||||
|  "serde", | ||||
|  "serde_json", | ||||
|  "thread_local", | ||||
|  "tokio", | ||||
|  "tokio-stream", | ||||
|  "tonic", | ||||
|  "tracing", | ||||
|  "tracing-core", | ||||
|  "tracing-subscriber", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "console_error_panic_hook" | ||||
| version = "0.1.7" | ||||
| @@ -1208,6 +1328,7 @@ dependencies = [ | ||||
|  "bevy_app", | ||||
|  "bevy_log", | ||||
|  "clap", | ||||
|  "console-subscriber", | ||||
|  "futures", | ||||
|  "futures-locks", | ||||
|  "http-body-util", | ||||
| @@ -1430,6 +1551,31 @@ version = "0.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" | ||||
|  | ||||
| [[package]] | ||||
| name = "h2" | ||||
| version = "0.4.8" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5017294ff4bb30944501348f6f8e42e6ad28f42c8bbef7a74029aff064a4e3c2" | ||||
| dependencies = [ | ||||
|  "atomic-waker", | ||||
|  "bytes", | ||||
|  "fnv", | ||||
|  "futures-core", | ||||
|  "futures-sink", | ||||
|  "http", | ||||
|  "indexmap 2.7.1", | ||||
|  "slab", | ||||
|  "tokio", | ||||
|  "tokio-util", | ||||
|  "tracing", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "hashbrown" | ||||
| version = "0.12.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" | ||||
|  | ||||
| [[package]] | ||||
| name = "hashbrown" | ||||
| version = "0.14.5" | ||||
| @@ -1447,6 +1593,19 @@ version = "0.15.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" | ||||
|  | ||||
| [[package]] | ||||
| name = "hdrhistogram" | ||||
| version = "7.5.4" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" | ||||
| dependencies = [ | ||||
|  "base64 0.21.7", | ||||
|  "byteorder", | ||||
|  "flate2", | ||||
|  "nom", | ||||
|  "num-traits", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "heck" | ||||
| version = "0.5.0" | ||||
| @@ -1542,6 +1701,12 @@ version = "1.0.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" | ||||
|  | ||||
| [[package]] | ||||
| name = "humantime" | ||||
| version = "2.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" | ||||
|  | ||||
| [[package]] | ||||
| name = "hyper" | ||||
| version = "1.6.0" | ||||
| @@ -1551,6 +1716,7 @@ dependencies = [ | ||||
|  "bytes", | ||||
|  "futures-channel", | ||||
|  "futures-util", | ||||
|  "h2", | ||||
|  "http", | ||||
|  "http-body", | ||||
|  "httparse", | ||||
| @@ -1580,6 +1746,19 @@ dependencies = [ | ||||
|  "webpki-roots", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "hyper-timeout" | ||||
| version = "0.5.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" | ||||
| dependencies = [ | ||||
|  "hyper", | ||||
|  "hyper-util", | ||||
|  "pin-project-lite", | ||||
|  "tokio", | ||||
|  "tower-service", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "hyper-util" | ||||
| version = "0.1.10" | ||||
| @@ -1738,6 +1917,16 @@ dependencies = [ | ||||
|  "icu_properties", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "indexmap" | ||||
| version = "1.9.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" | ||||
| dependencies = [ | ||||
|  "autocfg", | ||||
|  "hashbrown 0.12.3", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "indexmap" | ||||
| version = "2.7.1" | ||||
| @@ -1871,6 +2060,12 @@ dependencies = [ | ||||
|  "regex-automata 0.1.10", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "matchit" | ||||
| version = "0.7.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" | ||||
|  | ||||
| [[package]] | ||||
| name = "md-5" | ||||
| version = "0.10.6" | ||||
| @@ -2168,7 +2363,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" | ||||
| dependencies = [ | ||||
|  "fixedbitset 0.4.2", | ||||
|  "indexmap", | ||||
|  "indexmap 2.7.1", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| @@ -2258,6 +2453,38 @@ dependencies = [ | ||||
|  "unicode-ident", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "prost" | ||||
| version = "0.13.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" | ||||
| dependencies = [ | ||||
|  "bytes", | ||||
|  "prost-derive", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "prost-derive" | ||||
| version = "0.13.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" | ||||
| dependencies = [ | ||||
|  "anyhow", | ||||
|  "itertools", | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "prost-types" | ||||
| version = "0.13.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" | ||||
| dependencies = [ | ||||
|  "prost", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "quinn" | ||||
| version = "0.11.6" | ||||
| @@ -2408,7 +2635,7 @@ version = "0.12.12" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" | ||||
| dependencies = [ | ||||
|  "base64", | ||||
|  "base64 0.22.1", | ||||
|  "bytes", | ||||
|  "futures-core", | ||||
|  "futures-util", | ||||
| @@ -2435,7 +2662,7 @@ dependencies = [ | ||||
|  "sync_wrapper", | ||||
|  "tokio", | ||||
|  "tokio-rustls", | ||||
|  "tower", | ||||
|  "tower 0.5.2", | ||||
|  "tower-service", | ||||
|  "url", | ||||
|  "wasm-bindgen", | ||||
| @@ -2945,6 +3172,7 @@ dependencies = [ | ||||
|  "pin-project-lite", | ||||
|  "socket2", | ||||
|  "tokio-macros", | ||||
|  "tracing", | ||||
|  "windows-sys 0.52.0", | ||||
| ] | ||||
|  | ||||
| @@ -2969,6 +3197,17 @@ dependencies = [ | ||||
|  "tokio", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "tokio-stream" | ||||
| version = "0.1.17" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" | ||||
| dependencies = [ | ||||
|  "futures-core", | ||||
|  "pin-project-lite", | ||||
|  "tokio", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "tokio-util" | ||||
| version = "0.7.13" | ||||
| @@ -2994,11 +3233,61 @@ version = "0.22.24" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" | ||||
| dependencies = [ | ||||
|  "indexmap", | ||||
|  "indexmap 2.7.1", | ||||
|  "toml_datetime", | ||||
|  "winnow", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "tonic" | ||||
| version = "0.12.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" | ||||
| dependencies = [ | ||||
|  "async-stream", | ||||
|  "async-trait", | ||||
|  "axum", | ||||
|  "base64 0.22.1", | ||||
|  "bytes", | ||||
|  "h2", | ||||
|  "http", | ||||
|  "http-body", | ||||
|  "http-body-util", | ||||
|  "hyper", | ||||
|  "hyper-timeout", | ||||
|  "hyper-util", | ||||
|  "percent-encoding", | ||||
|  "pin-project", | ||||
|  "prost", | ||||
|  "socket2", | ||||
|  "tokio", | ||||
|  "tokio-stream", | ||||
|  "tower 0.4.13", | ||||
|  "tower-layer", | ||||
|  "tower-service", | ||||
|  "tracing", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "tower" | ||||
| version = "0.4.13" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" | ||||
| dependencies = [ | ||||
|  "futures-core", | ||||
|  "futures-util", | ||||
|  "indexmap 1.9.3", | ||||
|  "pin-project", | ||||
|  "pin-project-lite", | ||||
|  "rand", | ||||
|  "slab", | ||||
|  "tokio", | ||||
|  "tokio-util", | ||||
|  "tower-layer", | ||||
|  "tower-service", | ||||
|  "tracing", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "tower" | ||||
| version = "0.5.2" | ||||
|   | ||||
| @@ -20,6 +20,7 @@ azalea = { git = "https://github.com/azalea-rs/azalea.git" } | ||||
| bevy_app = "0" | ||||
| bevy_log = "0" | ||||
| clap = { version = "4", features = ["derive"] } | ||||
| console-subscriber = { version = "0", optional = true } | ||||
| futures = "0" | ||||
| futures-locks = "0" | ||||
| http-body-util = "0" | ||||
| @@ -28,3 +29,6 @@ hyper-util = "0" | ||||
| log = { version = "0" } | ||||
| mlua = { version = "0", features = ["async", "luajit", "send"] } | ||||
| tokio = { version = "1", features = ["macros"] } | ||||
|  | ||||
| [features] | ||||
| console-subscriber = ["dep:console-subscriber"] | ||||
|   | ||||
							
								
								
									
										39
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -42,6 +42,9 @@ pub struct State { | ||||
|  | ||||
| #[tokio::main] | ||||
| async fn main() -> anyhow::Result<()> { | ||||
|     #[cfg(feature = "console-subscriber")] | ||||
|     console_subscriber::init(); | ||||
|  | ||||
|     let args = arguments::Arguments::parse(); | ||||
|  | ||||
|     let script_path = args.script.unwrap_or(PathBuf::from(DEFAULT_SCRIPT_PATH)); | ||||
| @@ -66,24 +69,28 @@ async fn main() -> anyhow::Result<()> { | ||||
|     let mut commands = CommandDispatcher::new(); | ||||
|     register(&mut commands); | ||||
|  | ||||
|     let log_plugin = LogPlugin { | ||||
|         custom_layer: |_| { | ||||
|             env::var("LOG_FILE").ok().map(|log_file| { | ||||
|                 layer() | ||||
|                     .with_writer( | ||||
|                         OpenOptions::new() | ||||
|                             .append(true) | ||||
|                             .create(true) | ||||
|                             .open(log_file) | ||||
|                             .expect("log file should be accessible"), | ||||
|                     ) | ||||
|                     .boxed() | ||||
|             }) | ||||
|         }, | ||||
|         ..Default::default() | ||||
|     let default_plugins = if cfg!(feature = "console-subscriber") { | ||||
|         DefaultPlugins.build().disable::<LogPlugin>() | ||||
|     } else { | ||||
|         DefaultPlugins.set(LogPlugin { | ||||
|             custom_layer: |_| { | ||||
|                 env::var("LOG_FILE").ok().map(|log_file| { | ||||
|                     layer() | ||||
|                         .with_writer( | ||||
|                             OpenOptions::new() | ||||
|                                 .append(true) | ||||
|                                 .create(true) | ||||
|                                 .open(log_file) | ||||
|                                 .expect("log file should be accessible"), | ||||
|                         ) | ||||
|                         .boxed() | ||||
|                 }) | ||||
|             }, | ||||
|             ..Default::default() | ||||
|         }) | ||||
|     }; | ||||
|     let Err(error) = ClientBuilder::new_without_plugins() | ||||
|         .add_plugins(DefaultPlugins.set(log_plugin)) | ||||
|         .add_plugins(default_plugins) | ||||
|         .add_plugins(DefaultBotPlugins) | ||||
|         .set_handler(events::handle_event) | ||||
|         .set_state(State { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user