diff options
| author | Aram Drevekenin <aram@poor.dev> | 2024-09-30 18:04:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-30 18:04:40 +0200 |
| commit | 9f1e38f9fa6efd166f5205eaa8603d6b05a68b2b (patch) | |
| tree | 3e41bdf65e4bb83fc08f3ad23f913630a97a3d97 /zellij-utils/src/plugin_api/plugin_command.rs | |
| parent | docs(changelog): background plugins (diff) | |
| download | sl0ppij-9f1e38f9fa6efd166f5205eaa8603d6b05a68b2b.tar.gz sl0ppij-9f1e38f9fa6efd166f5205eaa8603d6b05a68b2b.tar.xz sl0ppij-9f1e38f9fa6efd166f5205eaa8603d6b05a68b2b.zip | |
feat(ui): built-in plugin manager (#3633)
* add plugin list to session info
* feat(plugins): new_plugin and reload_plugin API commands
* feat(plugins): built-in plugin manager
* style(fmt): rustfmt
* update plugins
Diffstat (limited to 'zellij-utils/src/plugin_api/plugin_command.rs')
| -rw-r--r-- | zellij-utils/src/plugin_api/plugin_command.rs | 64 |
1 files changed, 55 insertions, 9 deletions
diff --git a/zellij-utils/src/plugin_api/plugin_command.rs b/zellij-utils/src/plugin_api/plugin_command.rs index 15c56d03..d455500a 100644 --- a/zellij-utils/src/plugin_api/plugin_command.rs +++ b/zellij-utils/src/plugin_api/plugin_command.rs @@ -9,18 +9,19 @@ pub use super::generated_api::api::{ FixedOrPercent as ProtobufFixedOrPercent, FixedOrPercentValue as ProtobufFixedOrPercentValue, FloatingPaneCoordinates as ProtobufFloatingPaneCoordinates, HidePaneWithIdPayload, - HttpVerb as ProtobufHttpVerb, IdAndNewName, KillSessionsPayload, MessageToPluginPayload, - MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload, MovePayload, - NewPluginArgs as ProtobufNewPluginArgs, NewTabsWithLayoutInfoPayload, + HttpVerb as ProtobufHttpVerb, IdAndNewName, KillSessionsPayload, LoadNewPluginPayload, + MessageToPluginPayload, MovePaneWithPaneIdInDirectionPayload, MovePaneWithPaneIdPayload, + MovePayload, NewPluginArgs as ProtobufNewPluginArgs, NewTabsWithLayoutInfoPayload, OpenCommandPanePayload, OpenFilePayload, PageScrollDownInPaneIdPayload, PageScrollUpInPaneIdPayload, PaneId as ProtobufPaneId, PaneType as ProtobufPaneType, PluginCommand as ProtobufPluginCommand, PluginMessagePayload, ReconfigurePayload, - RequestPluginPermissionPayload, RerunCommandPanePayload, ResizePaneIdWithDirectionPayload, - ResizePayload, RunCommandPayload, ScrollDownInPaneIdPayload, ScrollToBottomInPaneIdPayload, - ScrollToTopInPaneIdPayload, ScrollUpInPaneIdPayload, SetTimeoutPayload, - ShowPaneWithIdPayload, SubscribePayload, SwitchSessionPayload, SwitchTabToPayload, - TogglePaneEmbedOrEjectForPaneIdPayload, TogglePaneIdFullscreenPayload, UnsubscribePayload, - WebRequestPayload, WriteCharsToPaneIdPayload, WriteToPaneIdPayload, + ReloadPluginPayload, RequestPluginPermissionPayload, RerunCommandPanePayload, + ResizePaneIdWithDirectionPayload, ResizePayload, RunCommandPayload, + ScrollDownInPaneIdPayload, ScrollToBottomInPaneIdPayload, ScrollToTopInPaneIdPayload, + ScrollUpInPaneIdPayload, SetTimeoutPayload, ShowPaneWithIdPayload, SubscribePayload, + SwitchSessionPayload, SwitchTabToPayload, TogglePaneEmbedOrEjectForPaneIdPayload, + TogglePaneIdFullscreenPayload, UnsubscribePayload, WebRequestPayload, + WriteCharsToPaneIdPayload, WriteToPaneIdPayload, }, plugin_permission::PermissionType as ProtobufPermissionType, resize::ResizeAction as ProtobufResizeAction, @@ -1203,6 +1204,28 @@ impl TryFrom<ProtobufPluginCommand> for PluginCommand { )), _ => Err("Mismatched payload for BreakPanesToTabWithIndex"), }, + Some(CommandName::ReloadPlugin) => match protobuf_plugin_command.payload { + Some(Payload::ReloadPluginPayload(reload_plugin_payload)) => { + Ok(PluginCommand::ReloadPlugin(reload_plugin_payload.plugin_id)) + }, + _ => Err("Mismatched payload for ReloadPlugin"), + }, + Some(CommandName::LoadNewPlugin) => match protobuf_plugin_command.payload { + Some(Payload::LoadNewPluginPayload(load_new_plugin_payload)) => { + Ok(PluginCommand::LoadNewPlugin { + url: load_new_plugin_payload.plugin_url, + config: load_new_plugin_payload + .plugin_config + .into_iter() + .map(|e| (e.name, e.value)) + .collect(), + load_in_background: load_new_plugin_payload + .should_load_plugin_in_background, + skip_plugin_cache: load_new_plugin_payload.should_skip_plugin_cache, + }) + }, + _ => Err("Mismatched payload for LoadNewPlugin"), + }, None => Err("Unrecognized plugin command"), } } @@ -1985,6 +2008,29 @@ impl TryFrom<PluginCommand> for ProtobufPluginCommand { }, )), }), + PluginCommand::ReloadPlugin(plugin_id) => Ok(ProtobufPluginCommand { + name: CommandName::ReloadPlugin as i32, + payload: Some(Payload::ReloadPluginPayload(ReloadPluginPayload { + plugin_id, + })), + }), + PluginCommand::LoadNewPlugin { + url, + config, + load_in_background, + skip_plugin_cache, + } => Ok(ProtobufPluginCommand { + name: CommandName::LoadNewPlugin as i32, + payload: Some(Payload::LoadNewPluginPayload(LoadNewPluginPayload { + plugin_url: url, + plugin_config: config + .into_iter() + .map(|(name, value)| ContextItem { name, value }) + .collect(), + should_skip_plugin_cache: skip_plugin_cache, + should_load_plugin_in_background: load_in_background, + })), + }), } } } |
