1
- use std:: { path:: Path as StdPath , sync:: Arc } ;
1
+ use std:: { path:: Path as StdPath , str :: FromStr , sync:: Arc } ;
2
2
3
3
use app_config:: { ServerConfig , StorageFormat } ;
4
4
use axum:: {
@@ -25,7 +25,7 @@ mod storage;
25
25
mod utils;
26
26
27
27
custom_error ! { pub MetaMCError
28
- MojangMetadata { source: download:: mojang :: MojangMetadataError } = "Error while downloading Mojang metadata: {source}" ,
28
+ MojangMetadata { source: download:: errors :: MetadataError } = "Error while downloading metadata: {source}" ,
29
29
Config { source: config:: ConfigError } = "Error while reading config from environment" ,
30
30
Parse { source: std:: net:: AddrParseError } = "Error while parsing address: {source}" ,
31
31
Hyper { source: hyper:: Error } = "Error while running Hyper: {source}" ,
@@ -250,13 +250,31 @@ async fn raw_forge_version_installer(
250
250
}
251
251
}
252
252
253
+ use argparse:: { ArgumentParser , Store } ;
254
+ use dotenv:: dotenv;
253
255
use tracing_subscriber:: { filter, prelude:: * } ;
254
256
255
257
#[ tokio:: main]
256
258
async fn main ( ) -> Result < ( ) , MetaMCError > {
257
- let config = Arc :: new ( ServerConfig :: from_config ( ) ? ) ;
259
+ dotenv ( ) . ok ( ) ; // This line loads the environment variables from the ".env" file.
258
260
259
- let file_appender = tracing_appender:: rolling:: hourly ( & config. debug_log . path , & config. debug_log . prefix ) ;
261
+ let mut config_path = "" . to_string ( ) ;
262
+ {
263
+ // limit scope of argparse borrows
264
+ let mut ap = ArgumentParser :: new ( ) ;
265
+ ap. set_description ( "A Minecraft metadata api server for Mojang and Modloader metadata." ) ;
266
+ ap. refer ( & mut config_path) . add_option (
267
+ & [ "-c" , "--config" ] ,
268
+ Store ,
269
+ "Path to a json config file." ,
270
+ ) ;
271
+ ap. parse_args_or_exit ( ) ;
272
+ }
273
+
274
+ let config = Arc :: new ( ServerConfig :: from_config ( & config_path) ?) ;
275
+
276
+ let file_appender =
277
+ tracing_appender:: rolling:: hourly ( & config. debug_log . path , & config. debug_log . prefix ) ;
260
278
let ( non_blocking_file, _guard) = tracing_appender:: non_blocking ( file_appender) ;
261
279
let stdout_log = tracing_subscriber:: fmt:: layer ( )
262
280
. with_file ( true )
@@ -267,7 +285,9 @@ async fn main() -> Result<(), MetaMCError> {
267
285
let debug_log = tracing_subscriber:: fmt:: layer ( )
268
286
. with_ansi ( false )
269
287
. with_writer ( non_blocking_file)
270
- . with_filter ( filter:: LevelFilter :: from_level ( config. debug_log . tracing_level ( ) ) ) ;
288
+ . with_filter ( filter:: LevelFilter :: from_level (
289
+ tracing:: Level :: from_str ( & config. debug_log . level ) . unwrap_or ( tracing:: Level :: DEBUG ) ,
290
+ ) ) ;
271
291
272
292
if config. debug_log . enable {
273
293
tracing_subscriber:: registry ( )
0 commit comments