Skip to content

Commit

Permalink
impl hotreload for network.toml
Browse files Browse the repository at this point in the history
  • Loading branch information
deniz committed Feb 1, 2024
1 parent 8a525ad commit 74a1fcd
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 15 deletions.
5 changes: 5 additions & 0 deletions src/app/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,11 @@ impl App {
Ok(())
}

pub fn reload_network(&mut self) -> Result<()> {
self.network = Network::load().context("Loading network.toml")?;
Ok(())
}

pub fn get_addons(&self, ty: AddonType) -> Vec<Downloadable> {
match ty {
AddonType::Plugin => {
Expand Down
47 changes: 32 additions & 15 deletions src/hot_reload/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -225,24 +225,36 @@ impl<'a> DevSession<'a> {
let mut lock = state.lock().unwrap();
*lock = State::Building;
drop(lock);

match self.builder.app.reload_server() {
Ok(()) => {
match self.builder.build_all().await {
Ok(jar_name) => {
self.jar_name = Some(jar_name);
tx.send(Command::Start).await?;
}
Err(e) => {
self.builder.app.error("Error while building");
self.builder.app.error(e);
}
}
}
Ok(()) => {},
Err(e) => {
self.builder.app.error("Error while reloading server.toml");
self.builder.app.error(e);
return Ok(());
}
}
};

match self.builder.app.reload_network() {
Ok(()) => {},
Err(e) => {
self.builder.app.error("Error while reloading network.toml");
self.builder.app.error(e);
return Ok(());
}
};

match self.builder.build_all().await {
Ok(jar_name) => {
self.jar_name = Some(jar_name);
tx.send(Command::Start).await?;
},
Err(e) => {
self.builder.app.error("Error while building");
self.builder.app.error(e);
return Ok(());
}
};
}
Command::BootstrapGroup(group_name, full_path, rel_path) => {
let should = group_name == "global" || self.builder.app.network.as_ref().is_some_and(|nw| {
Expand Down Expand Up @@ -644,7 +656,7 @@ impl<'a> DevSession<'a> {
)?)
}

pub fn create_servertoml_watcher(
pub fn create_restarter_watcher(
tx: mpsc::Sender<Command>,
) -> Result<Debouncer<RecommendedWatcher, FileIdMap>> {
Ok(new_debouncer(
Expand Down Expand Up @@ -677,7 +689,8 @@ impl<'a> DevSession<'a> {
)?;
let mut hotreload_watcher =
Self::create_hotreload_watcher(cfg_mutex_w.clone(), tx.clone())?;
let mut servertoml_watcher = Self::create_servertoml_watcher(tx.clone())?;
let mut servertoml_watcher = Self::create_restarter_watcher(tx.clone())?;
let mut networktoml_watcher = Self::create_restarter_watcher(tx.clone())?;
let mut network_groups_watcher = Self::create_network_groups_watcher(
cfg_mutex_w.clone(),
tx.clone(),
Expand Down Expand Up @@ -712,6 +725,10 @@ impl<'a> DevSession<'a> {
if let Some(nw) = &self.builder.app.network {
self.builder.app.log_dev("Watching [network.toml] groups/*/config/**");
network_groups_watcher.watcher().watch(&nw.path.join("groups"), RecursiveMode::Recursive)?;
networktoml_watcher.watcher().watch(
nw.path.join("network.toml").as_path(),
RecursiveMode::NonRecursive,
)?;
}
}

Expand Down

0 comments on commit 74a1fcd

Please sign in to comment.