#[cfg(feature = "remote-profile")]
fn setup_puffin_http() -> color_eyre::Result<puffin_http::Server> {
    use color_eyre::eyre::WrapErr;
    let server_addr = format!("0.0.0.0:{}", puffin_http::DEFAULT_PORT);
    log::info!("Started Puffin server instance at {server_addr}");
    Ok(puffin_http::Server::new(&server_addr)
        .map_err(|e| color_eyre::eyre::eyre!(Box::new(e)))
        .wrap_err("Failed to start Puffin instrumentation server")?)
}

#[cfg(not(feature = "remote-profile"))]
fn setup_puffin_http() -> color_eyre::Result<()> {
    Ok(())
}

// We use log for logging, do we want to create user logs at some point?
// maybe, but slow your jets broski.
#[cfg(feature = "desktop")]
fn main() -> color_eyre::Result<()> {
    color_eyre::install()?;
    env_logger::init();

    #[allow(clippy::let_unit_value)]
    let _puffin_server = setup_puffin_http()?;
    #[cfg(feature = "profile")]
    puffin::set_scopes_on(true);

    pollster::block_on(meowframe::run())
}

#[cfg(not(feature = "desktop"))]
fn main() {
    unreachable!("To build for desktop, the `desktop` feature must be enabled")
}