fix hot-reload watcher for client/server (#4200)
* use `@` syntax * watch the server * fmt
This commit is contained in:
1 parent
bb0621fa1b
commit
22e0682f10
6 files changed
+84
-39
No files matched your search
@@ -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>),
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user