fix hot-reload watcher for client/server (#4200)

* use `@` syntax

* watch the server

* fmt
This commit is contained in:
Jonathan Kelley authored and GitHub committed 2025-05-25 17:42:12 +01:00
1 parent bb0621fa1b
commit 22e0682f10
6 files changed
+84 -39

No files matched your search

+2 -2
View File
@@ -97,11 +97,11 @@ pub(crate) struct TargetArgs {
#[command(subcommand_precedence_over_arg = true)]
pub(crate) enum TargetCmd {
/// Specify the arguments for the client build
#[clap(name = "client")]
#[clap(name = "@client")]
Client(ChainedCommand<TargetArgs, TargetCmd>),
/// Specify the arguments for the server build
#[clap(name = "server")]
#[clap(name = "@server")]
Server(ChainedCommand<TargetArgs, TargetCmd>),
}
+32
View File
@@ -777,6 +777,10 @@ impl AppServer {
fn load_rsx_filemap(&mut self) {
self.fill_filemap_from_krate(self.client.build.crate_dir());
if let Some(server) = self.server.as_ref() {
self.fill_filemap_from_krate(server.build.crate_dir());
}
for krate in self.all_watched_crates() {
self.fill_filemap_from_krate(krate);
}
@@ -847,6 +851,17 @@ impl AppServer {
}
}
if let Some(server) = self.server.as_ref() {
// Watch the server's crate directory as well
for path in self.watch_paths(server.build.crate_dir(), server.build.crate_package) {
tracing::trace!("Watching path {path:?}");
if let Err(err) = self.watcher.watch(&path, RecursiveMode::Recursive) {
handle_notify_error(err);
}
}
}
// Also watch the crates themselves, but not recursively, such that we can pick up new folders
for krate in self.all_watched_crates() {
tracing::trace!("Watching path {krate:?}");
@@ -957,6 +972,23 @@ impl AppServer {
.chain(Some(crate_dir))
.collect();
if let Some(server) = self.server.as_ref() {
let server_crate_package = server.build.crate_package;
let server_crate_dir = server.build.crate_dir();
let server_krates: Vec<PathBuf> = self
.local_dependencies(server_crate_package)
.into_iter()
.map(|p| {
p.parent()
.expect("Server manifest to exist and have a parent")
.to_path_buf()
})
.chain(Some(server_crate_dir))
.collect();
krates.extend(server_krates);
}
krates.dedup();
krates