@@ -6,45 +6,43 @@ use axum::{routing::get, Extension, Router};
6
6
use tracing:: { debug, info} ;
7
7
8
8
use anyhow:: Result ;
9
- use argparse:: { ArgumentParser , Store , StoreTrue } ;
10
9
use dotenv:: dotenv;
11
10
use tracing_subscriber:: { filter, prelude:: * } ;
12
11
13
12
mod app_config;
14
13
mod download;
15
- mod errors;
16
14
mod routes;
17
15
mod storage;
18
16
mod utils;
19
17
20
18
#[ macro_use]
21
19
extern crate lazy_static;
22
20
21
+ use clap:: Parser ;
22
+
23
+ #[ derive( Parser , Debug ) ]
24
+ #[ command( author, version, about, long_about = None ) ]
25
+ struct CliArgs {
26
+ #[ arg( short, long, value_name = "FILE" ) ]
27
+ config : Option < String > ,
28
+ #[ arg( long) ]
29
+ use_dotenv : bool ,
30
+ }
31
+
23
32
#[ tokio:: main]
24
33
async fn main ( ) -> Result < ( ) > {
25
- let mut config_path = "" . to_string ( ) ;
26
- let mut use_dotenv = false ;
27
- {
28
- // limit scope of argparse borrows
29
- let mut ap = ArgumentParser :: new ( ) ;
30
- ap. set_description ( "A Minecraft metadata api server for Mojang and Modloader metadata." ) ;
31
- ap. refer ( & mut config_path) . add_option (
32
- & [ "-c" , "--config" ] ,
33
- Store ,
34
- "Path to a json config file." ,
35
- ) ;
36
- ap. refer ( & mut use_dotenv) . add_option (
37
- & [ "--use-dotenv" ] ,
38
- StoreTrue ,
39
- "Load environment variables from a local .env" ,
40
- ) ;
41
- ap. parse_args_or_exit ( ) ;
42
- }
34
+ let mut config_path = String :: new ( ) ;
35
+
36
+ let args = CliArgs :: parse ( ) ;
43
37
44
- if use_dotenv {
38
+ if args . use_dotenv {
45
39
dotenv ( ) . ok ( ) ;
46
40
}
47
41
42
+ if let Some ( path) = args. config {
43
+ config_path = path;
44
+ }
45
+
48
46
let config = Arc :: new ( ServerConfig :: from_config ( & config_path) ?) ;
49
47
50
48
let file_appender =
0 commit comments