diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs index 9757748..ce1906e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,28 @@ pub mod dimension; pub mod render; +pub mod viewer; -use crate::dimension::Dimension; -use log::info; -use render::Renderer; +use clap::{Parser, Subcommand}; +use std::{net::SocketAddr, path::PathBuf}; +use viewer::serve_http; + +#[derive(Parser)] +struct Args { + /// Dimension directory containing .mca files + #[clap(long, short, default_value = "./world/region")] + dimension: PathBuf, + + #[clap(subcommand)] + action: Action, +} +#[derive(Subcommand)] +enum Action { + /// Run a http server providing an interactive map viewer. + Serve { + #[arg(long, short, default_value = "127.0.0.1:8080")] + bind: SocketAddr, + }, +} fn main() { env_logger::builder() @@ -11,13 +30,9 @@ fn main() { .parse_env("LOG") .init(); - let dim = Dimension::new("/home/muffin/containers/games/home/user/server/world/region/"); - let renderer = Renderer::new(dim); - for sx in 0..2 { - for sy in 0..2 { - let view = renderer.render_segment(sx, sy); - info!("saving png"); - view.save(format!("/tmp/seg.{sx}.{sy}.png")).unwrap(); - } + let args = Args::parse(); + + match args.action { + Action::Serve { bind } => serve_http(bind), } } |