use axum::Router;
#[allow(unused_imports)]
use axum_vite::{ViteConfig, spa_router, spawn_dev_server};
use tokio::net::TcpListener;
#[tokio::main]
async fn main() {
env_logger::init();
let config = ViteConfig::from_env(axum_vite::embedded_dir!(
"$CARGO_MANIFEST_DIR/examples/frontend/dist"
));
#[cfg(debug_assertions)]
let _dev_server = config
.auto_start
.then(|| match spawn_dev_server(&config) {
Ok(handle) => {
log::info!("Vite dev server spawned");
Some(handle)
}
Err(e) => {
log::warn!("Failed to spawn Vite dev server: {}", e);
None
}
})
.flatten();
let app = Router::new()
.merge(spa_router(config));
let addr = "127.0.0.1:3000";
let listener = TcpListener::bind(addr).await.unwrap();
log::info!("listening on http://{addr}");
axum::serve(listener, app).await.unwrap();
}