diff options
Diffstat (limited to 'zellij-server/src/plugins/plugin_loader.rs')
-rw-r--r-- | zellij-server/src/plugins/plugin_loader.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/zellij-server/src/plugins/plugin_loader.rs b/zellij-server/src/plugins/plugin_loader.rs index b74c80b18..fafeeb22c 100644 --- a/zellij-server/src/plugins/plugin_loader.rs +++ b/zellij-server/src/plugins/plugin_loader.rs @@ -66,6 +66,7 @@ pub struct PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, } impl<'a> PluginLoader<'a> { @@ -84,6 +85,7 @@ impl<'a> PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, ) -> Result<()> { let err_context = || format!("failed to reload plugin {plugin_id} from memory"); let mut connected_clients: Vec<ClientId> = @@ -108,6 +110,7 @@ impl<'a> PluginLoader<'a> { client_attributes, default_shell, default_layout, + layout_dir, )?; plugin_loader .load_module_from_memory() @@ -149,6 +152,7 @@ impl<'a> PluginLoader<'a> { default_shell: Option<TerminalAction>, default_layout: Box<Layout>, skip_cache: bool, + layout_dir: Option<PathBuf>, ) -> Result<()> { let err_context = || format!("failed to start plugin {plugin_id} for client {client_id}"); let mut plugin_loader = PluginLoader::new( @@ -168,6 +172,7 @@ impl<'a> PluginLoader<'a> { client_attributes, default_shell, default_layout, + layout_dir, )?; if skip_cache { plugin_loader @@ -231,6 +236,7 @@ impl<'a> PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, ) -> Result<()> { let mut new_plugins = HashSet::new(); for plugin_id in plugin_map.lock().unwrap().plugin_ids() { @@ -252,6 +258,7 @@ impl<'a> PluginLoader<'a> { client_attributes.clone(), default_shell.clone(), default_layout.clone(), + layout_dir.clone(), )?; plugin_loader .load_module_from_memory() @@ -285,6 +292,7 @@ impl<'a> PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, ) -> Result<()> { let err_context = || format!("failed to reload plugin id {plugin_id}"); @@ -310,6 +318,7 @@ impl<'a> PluginLoader<'a> { client_attributes, default_shell, default_layout, + layout_dir, )?; plugin_loader .compile_module() @@ -347,6 +356,7 @@ impl<'a> PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, ) -> Result<Self> { let plugin_own_data_dir = ZELLIJ_SESSION_CACHE_DIR .join(Url::from(&plugin.location).to_string()) @@ -373,6 +383,7 @@ impl<'a> PluginLoader<'a> { client_attributes, default_shell, default_layout, + layout_dir, }) } pub fn new_from_existing_plugin_attributes( @@ -390,6 +401,7 @@ impl<'a> PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, ) -> Result<Self> { let err_context = || "Failed to find existing plugin"; let (running_plugin, _subscriptions, _workers) = { @@ -423,6 +435,7 @@ impl<'a> PluginLoader<'a> { client_attributes, default_shell, default_layout, + layout_dir, ) } pub fn new_from_different_client_id( @@ -440,6 +453,7 @@ impl<'a> PluginLoader<'a> { client_attributes: ClientAttributes, default_shell: Option<TerminalAction>, default_layout: Box<Layout>, + layout_dir: Option<PathBuf>, ) -> Result<Self> { let err_context = || "Failed to find existing plugin"; let running_plugin = { @@ -474,6 +488,7 @@ impl<'a> PluginLoader<'a> { client_attributes, default_shell, default_layout, + layout_dir, ) } pub fn load_module_from_memory(&mut self) -> Result<Module> { @@ -737,6 +752,7 @@ impl<'a> PluginLoader<'a> { self.client_attributes.clone(), self.default_shell.clone(), self.default_layout.clone(), + self.layout_dir.clone(), )?; plugin_loader_for_client .load_module_from_memory() @@ -845,6 +861,7 @@ impl<'a> PluginLoader<'a> { plugin_cwd: self.zellij_cwd.clone(), input_pipes_to_unblock: Arc::new(Mutex::new(HashSet::new())), input_pipes_to_block: Arc::new(Mutex::new(HashSet::new())), + layout_dir: self.layout_dir.clone(), }; let subscriptions = Arc::new(Mutex::new(HashSet::new())); |