hotfix: finding hotreload path fails when not running under cargo

This commit is contained in:
Jonathan Kelley 2024-03-20 09:54:57 -07:00
parent e923c6462c
commit 6c9f991f0b
No known key found for this signature in database
GPG key ID: 1FBB50F7EB0A08BE
3 changed files with 20 additions and 5 deletions

View file

@ -49,7 +49,14 @@ async fn hotreload_loop(mut socket: WebSocket, state: HotReloadState) -> anyhow:
let msg = futures_util::select! {
msg = _rx => msg,
_ = _socket => break,
e = _socket => {
if let Some(Err(e)) = e {
log::info!("🔥 Hot Reload WebSocket disconnected: {}", e);
break;
} else {
continue;
}
},
};
let Ok(msg) = msg else { break };

View file

@ -441,6 +441,7 @@ pub async fn hot_reload_handler(ws: axum::extract::WebSocketUpgrade) -> impl Int
let mut rx =
tokio_stream::wrappers::WatchStream::from_changes(state.message_receiver.clone());
while let Some(change) = rx.next().await {
if let Some(template) = change {
let template = { serde_json::to_string(&template).unwrap() };
@ -449,6 +450,8 @@ pub async fn hot_reload_handler(ws: axum::extract::WebSocketUpgrade) -> impl Int
};
}
}
println!("😳 Hot Reload WebSocket disconnected");
})
}

View file

@ -30,12 +30,15 @@ pub enum HotReloadMsg {
/// Connect to the hot reloading listener. The callback provided will be called every time a template change is detected
pub fn connect(callback: impl FnMut(HotReloadMsg) + Send + 'static) {
let Ok(_manifest_dir) = std::env::var("CARGO_MANIFEST_DIR") else {
return;
};
// FIXME: this is falling back onto the current directory when not running under cargo, which is how the CLI runs this.
// This needs to be fixed.
let _manifest_dir = std::env::var("CARGO_MANIFEST_DIR");
// get the cargo manifest directory, where the target dir lives
let mut path = PathBuf::from(_manifest_dir);
let mut path = match _manifest_dir {
Ok(manifest_dir) => PathBuf::from(manifest_dir),
Err(_) => std::env::current_dir().unwrap(),
};
// walk the path until we a find a socket named `dioxusin` inside that folder's target directory
loop {
@ -53,6 +56,8 @@ pub fn connect(callback: impl FnMut(HotReloadMsg) + Send + 'static) {
};
}
println!("connecting to {:?}", path);
connect_at(path, callback);
}