aboutsummaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/plugin_command.rs
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2024-09-30 18:04:40 +0200
committerGitHub <noreply@github.com>2024-09-30 18:04:40 +0200
commit9f1e38f9fa6efd166f5205eaa8603d6b05a68b2b (patch)
tree3e41bdf65e4bb83fc08f3ad23f913630a97a3d97 /zellij-utils/src/plugin_api/plugin_command.rs
parentdocs(changelog): background plugins (diff)
downloadsl0ppij-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.rs64
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,
+ })),
+ }),
}
}
}