aboutsummaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/main.rs23
1 files changed, 16 insertions, 7 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index db667779..5b191365 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -16,9 +16,10 @@
*/
use anyhow::{anyhow, Result};
+use clap::Parser;
use futures_util::{SinkExt, StreamExt};
use log::{debug, info, warn, LevelFilter};
-use std::{env::args, path::PathBuf, process::exit, str::FromStr, sync::Arc, time::Duration};
+use std::{path::PathBuf, process::exit, str::FromStr, sync::Arc, time::Duration};
use tokio::{
net::TcpListener,
spawn,
@@ -32,25 +33,33 @@ use undercooked::{
state::State,
};
+#[derive(Parser)]
+struct Args {
+ #[arg(short, long)]
+ version: bool,
+ #[arg(short, long, default_value = "./data")]
+ data_dir: PathBuf,
+}
+
fn main() -> Result<()> {
env_logger::builder()
.filter_level(LevelFilter::Info)
.parse_env("LOG")
.init();
- if let Some(arg) = args().nth(1) {
- match arg.as_str() {
- "version" => println!("{}", env!("CARGO_PKG_VERSION")),
- _ => panic!("unknown subcommand"),
- }
+ let args = Args::parse();
+
+ if args.version {
+ println!("{}", env!("CARGO_PKG_VERSION"));
exit(0);
}
let data_dir = PathBuf::from_str(
[
+ args.data_dir.to_str().unwrap(),
"/usr/local/share/undercooked/data",
"/usr/share/undercooked/data",
- "./data",
+ "/opt/undercooked/data",
]
.into_iter()
.find(|p| PathBuf::from_str(p).unwrap().join("index.yaml").exists())