rebuild when the cargo.toml changes
@@ -179,6 +179,27 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
.map(|path| crate_dir.join(PathBuf::from(path)))
.collect::<Vec<_>>();
+ let rebuild = || {
+ if let Some(rebuild_command) = rebuild_with {
+ *aborted.lock().unwrap() = true;
+ if log {
+ println!("Rebuilding the application...");
+ }
+ execute::shell(rebuild_command)
+ .spawn()
+ .expect("Failed to rebuild the application. Is cargo installed?");
+ for channel in &mut *channels.lock().unwrap() {
+ send_msg(HotReloadMsg::Shutdown, channel);
+ }
+ } else {
+ if log {
+ println!(
+ "Rebuild needed... shutting down hot reloading.\nManually rebuild the application to view futher changes."
+ );
+ }
+ }
+ };
+
for evt in rx {
if chrono::Local::now().timestamp() > last_update_time {
if let Ok(evt) = evt {
@@ -187,7 +208,7 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
.iter()
.filter(|path| {
// skip non rust files
- path.extension().and_then(|p| p.to_str()) == Some("rs") &&
+ matches!(path.extension().and_then(|p| p.to_str()), Some("rs" | "toml" | "css" | "html" | "js")) &&
// skip excluded paths
!excluded_paths.iter().any(|p| path.starts_with(p))
})
@@ -200,6 +221,10 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
let mut channels = channels.lock().unwrap();
for path in real_paths {
+ // if this file type cannot be hot reloaded, rebuild the application
+ if path.extension().and_then(|p| p.to_str()) != Some("rs") {
+ rebuild();
+ }
// find changes to the rsx in the file
match file_map
.lock()
@@ -223,22 +248,8 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
}
}
UpdateResult::NeedsRebuild => {
- if let Some(rebuild_command) = rebuild_with {
- *aborted.lock().unwrap() = true;
- if log {
- println!("Rebuilding the application...");
- }
- execute::shell(rebuild_command).spawn().expect("Failed to rebuild the application. Is cargo installed?");
- for channel in &mut *channels {
- send_msg(HotReloadMsg::Shutdown, channel);
- }
- } else {
- if log {
- println!(
- "Rebuild needed... shutting down hot reloading.\nManually rebuild the application to view futher changes."
- );
- }
- }
+ drop(channels);
+ rebuild();
return;
}
