coolstyleserver 2.5.3

a proxy server for stylesheet hot reloading
mod args;
mod error;
mod routes;
mod state;

use axum::{routing::get, serve, Router};
use error::Error;
use routes::{
	fallback::fallback_handler, fetch::fetch_handler, js::js_handler, watch::watch_handler,
};
use state::State;
use std::sync::Arc;
use tokio::net::TcpListener;
use tower_http::trace::TraceLayer;

#[tokio::main]
async fn main() {
	let state = State::default();
	let listen = state.args.port;
	let state = Arc::new(state);

	tracing_subscriber::fmt()
		.compact()
		.with_max_level(tracing::Level::DEBUG)
		.init();

	let cool_api = Router::new()
		.route("/cool-stylesheet.js", get(js_handler))
		.route("/watch", get(watch_handler))
		.route("/fetch", get(fetch_handler));
	let app = Router::new()
		.nest(format!("/{}", state.args.cool_base).as_str(), cool_api)
		.fallback(get(fallback_handler))
		.with_state(state)
		.layer(TraceLayer::new_for_http());
	let listener = TcpListener::bind(("0.0.0.0", listen))
		.await
		.expect("should listen");

	serve(listener, app.into_make_service())
		.await
		.expect("server should start");
}