diff options
author | Aram Drevekenin <aram@poor.dev> | 2024-01-10 11:02:15 +0100 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2024-01-10 11:02:15 +0100 |
commit | 241168a96f57b5c6a3a273c6335899713afc4d41 (patch) | |
tree | dfee0c447e8f18ba5da247d30f143da4e1665882 | |
parent | b9c3d89970c1af295511a82d74e88de5807875c1 (diff) |
refactor - rename CliMessage to CliPipe
17 files changed, 65 insertions, 91 deletions
diff --git a/default-plugins/fixture-plugin-for-tests/src/main.rs b/default-plugins/fixture-plugin-for-tests/src/main.rs index 973d0eca5..1083a9293 100644 --- a/default-plugins/fixture-plugin-for-tests/src/main.rs +++ b/default-plugins/fixture-plugin-for-tests/src/main.rs @@ -53,7 +53,7 @@ impl ZellijPlugin for State { PermissionType::OpenTerminalsOrPlugins, PermissionType::WriteToStdin, PermissionType::WebAccess, - PermissionType::ReadCliMessages, + PermissionType::ReadCliPipes, PermissionType::MessageAndLaunchOtherPlugins, ]); self.configuration = configuration; diff --git a/zellij-client/src/cli_client.rs b/zellij-client/src/cli_client.rs index 5a023dee3..13adaeb0b 100644 --- a/zellij-client/src/cli_client.rs +++ b/zellij-client/src/cli_client.rs @@ -27,8 +27,8 @@ pub fn start_cli_client(mut os_input: Box<dyn ClientOsApi>, session_name: &str, for action in actions { match action { - Action::CliMessage { input_pipe_id, name, payload, plugin, args, configuration, launch_new, skip_cache, floating, in_place, cwd, pane_title } => { - pipe_client(&mut os_input, input_pipe_id, name, payload, plugin, args, configuration, launch_new, skip_cache, floating, in_place, pane_id, cwd, pane_title); + Action::CliPipe { pipe_id, name, payload, plugin, args, configuration, launch_new, skip_cache, floating, in_place, cwd, pane_title } => { + pipe_client(&mut os_input, pipe_id, name, payload, plugin, args, configuration, launch_new, skip_cache, floating, in_place, pane_id, cwd, pane_title); }, action => { single_message_client(&mut os_input, action, pane_id); @@ -39,7 +39,7 @@ pub fn start_cli_client(mut os_input: Box<dyn ClientOsApi>, session_name: &str, fn pipe_client( os_input: &mut Box<dyn ClientOsApi>, - input_pipe_id: String, + pipe_id: String, mut name: Option<String>, payload: Option<String>, plugin: Option<String>, @@ -62,8 +62,8 @@ fn pipe_client( } loop { if payload.is_some() { - let msg = ClientToServerMsg::Action(Action::CliMessage{ - input_pipe_id: input_pipe_id.clone(), + let msg = ClientToServerMsg::Action(Action::CliPipe { + pipe_id: pipe_id.clone(), name: name.clone(), payload, args: args.clone(), @@ -82,8 +82,8 @@ fn pipe_client( let mut buffer = String::new(); handle.read_line(&mut buffer).unwrap(); // TODO: no unwrap etc. if buffer.is_empty() { - let msg = ClientToServerMsg::Action(Action::CliMessage{ - input_pipe_id: input_pipe_id.clone(), + let msg = ClientToServerMsg::Action(Action::CliPipe { + pipe_id: pipe_id.clone(), name: name.clone(), payload: None, args: args.clone(), @@ -99,8 +99,8 @@ fn pipe_client( os_input.send_to_server(msg); break; } else { - let msg = ClientToServerMsg::Action(Action::CliMessage{ - input_pipe_id: input_pipe_id.clone(), + let msg = ClientToServerMsg::Action(Action::CliPipe { + pipe_id: pipe_id.clone(), name: name.clone(), payload: Some(buffer), args: args.clone(), @@ -120,13 +120,13 @@ fn pipe_client( loop { match os_input.recv_from_server() { Some((ServerToClientMsg::UnblockCliPipeInput(pipe_name), _)) => { - if pipe_name == input_pipe_id { + if pipe_name == pipe_id { break; } }, Some((ServerToClientMsg::CliPipeOutput(pipe_name, output), _)) => { let err_context = "Failed to write to stdout"; - if pipe_name == input_pipe_id { + if pipe_name == pipe_id { let mut stdout = os_input.get_stdout_writer(); stdout .write_all(output.as_bytes()) diff --git a/zellij-server/src/plugins/mod.rs b/zellij-server/src/plugins/mod.rs index 88845bba6..97c4d06f6 100644 --- a/zellij-server/src/plugins/mod.rs +++ b/zellij-server/src/plugins/mod.rs @@ -101,8 +101,8 @@ pub enum PluginInstruction { ), DumpLayout(SessionLayoutMetadata, ClientId), LogLayoutToHd(SessionLayoutMetadata), - CliMessage { - input_pipe_id: String, + CliPipe { + pipe_id: String, name: String, payload: Option<String>, plugin: Option<String>, @@ -151,7 +151,7 @@ impl From<&PluginInstruction> for PluginContext { }, PluginInstruction::DumpLayout(..) => PluginContext::DumpLayout, PluginInstruction::LogLayoutToHd(..) => PluginContext::LogLayoutToHd, - PluginInstruction::CliMessage {..} => PluginContext::CliMessage, + PluginInstruction::CliPipe {..} => PluginContext::CliPipe, PluginInstruction::CachePluginEvents{..} => PluginContext::CachePluginEvents, PluginInstruction::MessageFromPlugin{..} => PluginContext::MessageFromPlugin, } @@ -425,8 +425,8 @@ pub(crate) fn plugin_thread_main( .send_to_pty(PtyInstruction::LogLayoutToHd(session_layout_metadata)), ); }, - PluginInstruction::CliMessage { - input_pipe_id, + PluginInstruction::CliPipe { + pipe_id, name, payload, plugin, @@ -464,7 +464,7 @@ pub(crate) fn plugin_thread_main( pipe_messages.push(( Some(plugin_id), client_id, - PipeMessage::new(PipeSource::Cli(input_pipe_id.clone()), &name, &payload, &args) + PipeMessage::new(PipeSource::Cli(pipe_id.clone()), &name, &payload, &args) )); } }, @@ -482,7 +482,7 @@ pub(crate) fn plugin_thread_main( pipe_messages.push(( Some(plugin_id), Some(client_id), - PipeMessage::new(PipeSource::Cli(input_pipe_id.clone()), &name, &payload, &args) + PipeMessage::new(PipeSource::Cli(pipe_id.clone()), &name, &payload, &args) )); } } diff --git a/zellij-server/src/plugins/unit/plugin_tests.rs b/zellij-server/src/plugins/unit/plugin_tests.rs index 0a1c09f67..1a6760159 100644 --- a/zellij-server/src/plugins/unit/plugin_tests.rs +++ b/zellij-server/src/plugins/unit/plugin_tests.rs @@ -5649,7 +5649,7 @@ pub fn unblock_input_plugin_command() { ScreenInstruction::PluginBytes, screen_receiver, 1, - &PermissionType::ReadCliMessages, + &PermissionType::ReadCliPipes, cache_path, plugin_thread_sender, client_id @@ -5670,8 +5670,8 @@ pub fn unblock_input_plugin_command() { )); std::thread::sleep(std::time::Duration::from_millis(500)); - let _ = plugin_thread_sender.send(PluginInstruction::CliMessage{ - input_pipe_id: "input_pipe_id".to_owned(), + let _ = plugin_thread_sender.send(PluginInstruction::CliPipe { + pipe_id: "input_pipe_id".to_owned(), name: "message_name".to_owned(), payload: Some("message_payload".to_owned()), plugin: None, // broadcast @@ -5730,7 +5730,7 @@ pub fn block_input_plugin_command() { ScreenInstruction::PluginBytes, screen_receiver, 1, - &PermissionType::ReadCliMessages, + &PermissionType::ReadCliPipes, cache_path, plugin_thread_sender, client_id @@ -5749,10 +5749,11 @@ pub fn block_input_plugin_command() { None, false, )); - std::thread::sleep(std::time::Duration::from_millis(500)); + // extra long time because we only start the fs watcher on plugin load + std::thread::sleep(std::time::Duration::from_millis(5000)); - let _ = plugin_thread_sender.send(PluginInstruction::CliMessage{ - input_pipe_id: "input_pipe_id".to_owned(), + let _ = plugin_thread_sender.send(PluginInstruction::CliPipe { + pipe_id: "input_pipe_id".to_owned(), name: "message_name_block".to_owned(), payload: Some("message_payload".to_owned()), plugin: None, // broadcast @@ -5838,14 +5839,9 @@ pub fn pipe_output_plugin_command() { false, )); std::thread::sleep(std::time::Duration::from_millis(500)); -// let _ = plugin_thread_sender.send(PluginInstruction::Update(vec![( -// None, -// Some(client_id), -// Event::CliMessage { input_pipe_id: "input_pipe_id".to_owned(), name: "pipe_output".to_owned(), payload: Some("message_payload".to_owned()), args: None} -// )])); - - let _ = plugin_thread_sender.send(PluginInstruction::CliMessage{ - input_pipe_id: "input_pipe_id".to_owned(), + + let _ = plugin_thread_sender.send(PluginInstruction::CliPipe { + pipe_id: "input_pipe_id".to_owned(), name: "pipe_output".to_owned(), payload: Some("message_payload".to_owned()), plugin: None, // broadcast @@ -5908,7 +5904,7 @@ pub fn send_message_to_plugin_plugin_command() { ScreenInstruction::PluginBytes, screen_receiver, 2, - &PermissionType::ReadCliMessages, + &PermissionType::ReadCliPipes, cache_path, plugin_thread_sender, client_id @@ -5928,8 +5924,8 @@ pub fn send_message_to_plugin_plugin_command() { false, )); std::thread::sleep(std::time::Duration::from_millis(500)); - let _ = plugin_thread_sender.send(PluginInstruction::CliMessage{ - input_pipe_id: "input_pipe_id".to_owned(), + let _ = plugin_thread_sender.send(PluginInstruction::CliPipe { + pipe_id: "input_pipe_id".to_owned(), name: "send_message_to_plugin".to_owned(), payload: Some("payload_sent_to_self".to_owned()), plugin: None, // broadcast @@ -5942,16 +5938,6 @@ pub fn send_message_to_plugin_plugin_command() { skip_cache: false, cli_client_id: client_id }); - - - -// vec![( -// None, -// Some(client_id), -// // this will trigger the fixture plugin to send a message to all plugins and then receive -// // it itself -// Event::CliMessage { input_pipe_id: "input_pipe_id".to_owned(), name: "send_message_to_plugin".to_owned(), payload: Some("payload_sent_to_self".to_owned()), args: None} -// )])); std::thread::sleep(std::time::Duration::from_millis(500)); teardown(); screen_thread.join().unwrap(); // this might take a while if the cache is cold diff --git a/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__granted_permission_request_result.snap b/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__granted_permission_request_result.snap index b19151f1a..9c3ecd064 100644 --- a/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__granted_permission_request_result.snap +++ b/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__granted_permission_request_result.snap @@ -12,7 +12,7 @@ Some( OpenTerminalsOrPlugins, WriteToStdin, WebAccess, - ReadCliMessages, + ReadCliPipes, MessageAndLaunchOtherPlugins, ], ) diff --git a/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__request_plugin_permissions.snap b/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__request_plugin_permissions.snap index fe0f945c3..3d9f7cfe1 100644 --- a/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__request_plugin_permissions.snap +++ b/zellij-server/src/plugins/unit/snapshots/zellij_server__plugins__plugin_tests__request_plugin_permissions.snap @@ -14,7 +14,7 @@ Some( OpenTerminalsOrPlugins, WriteToStdin, WebAccess, - ReadCliMessages, + ReadCliPipes, MessageAndLaunchOtherPlugins, ], ) diff --git a/zellij-server/src/plugins/zellij_exports.rs b/zellij-server/src/plugins/zellij_exports.rs index 33d6fbf3e..fe2d8e462 100644 --- a/zellij-server/src/plugins/zellij_exports.rs +++ b/zellij-server/src/plugins/zellij_exports.rs @@ -1400,7 +1400,7 @@ fn check_command_permission( | PluginCommand::RenameTab(..) => PermissionType::ChangeApplicationState, PluginCommand::UnblockCliPipeInput(..) | PluginCommand::BlockCliPipeInput(..) - | PluginCommand::CliPipeOutput(..) => PermissionType::ReadCliMessages, + | PluginCommand::CliPipeOutput(..) => PermissionType::ReadCliPipes, PluginCommand::MessageToPlugin(..) => PermissionType::MessageAndLaunchOtherPlugins, _ => return (PermissionStatus::Granted, None), }; diff --git a/zellij-server/src/route.rs b/zellij-server/src/route.rs index 1c0a22cad..5d76b5bca 100644 --- a/zellij-server/src/route.rs +++ b/zellij-server/src/route.rs @@ -804,12 +804,12 @@ pub(crate) fn route_action( .send_to_screen(ScreenInstruction::RenameSession(name, client_id)) .with_context(err_context)?; }, - Action::CliMessage{ input_pipe_id, mut name, payload, plugin, args, configuration, floating, in_place, launch_new, skip_cache, cwd, pane_title } => { + Action::CliPipe { pipe_id, mut name, payload, plugin, args, configuration, floating, in_place, launch_new, skip_cache, cwd, pane_title } => { if let Some(seen_cli_pipes) = seen_cli_pipes.as_mut() { - if !seen_cli_pipes.contains(&input_pipe_id) { - seen_cli_pipes.insert(input_pipe_id.clone()); + if !seen_cli_pipes.contains(&pipe_id) { + seen_cli_pipes.insert(pipe_id.clone()); senders - .send_to_server(ServerInstruction::AssociatePipeWithClient{ pipe_id: input_pipe_id.clone(), client_id }) + .send_to_server(ServerInstruction::AssociatePipeWithClient{ pipe_id: pipe_id.clone(), client_id }) .with_context(err_context)?; } } @@ -820,7 +820,7 @@ pub(crate) fn route_action( } let pane_id_to_replace = if should_open_in_place { pane_id } else { None }; senders - .send_to_plugin(PluginInstruction::CliMessage { input_pipe_id, name, payload, plugin, args, configuration, floating, pane_id_to_replace, cwd, pane_title, skip_cache, cli_client_id: client_id }) + .send_to_plugin(PluginInstruction::CliPipe { pipe_id, name, payload, plugin, args, configuration, floating, pane_id_to_replace, cwd, pane_title, skip_cache, cli_client_id: client_id }) .with_context(err_context)?; } else { log::error!("Message must have a name"); diff --git a/zellij-utils/assets/prost/api.action.rs b/zellij-utils/assets/prost/api.action.rs index d347a3b07..4096b0740 100644 --- a/zellij-utils/assets/prost/api.action.rs +++ b/zellij-utils/assets/prost/api.action.rs @@ -105,12 +105,12 @@ pub mod action { #[prost(message, tag = "46")] LaunchPluginPayload(super::LaunchOrFocusPluginPayload), #[prost(message, tag = "47")] - MessagePayload(super::CliMessagePayload), + MessagePayload(super::CliPipePayload), } } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct CliMessagePayload { +pub struct CliPipePayload { #[prost(string, optional, tag = "1")] pub name: ::core::option::Option<::prost::alloc::string::String>, #[prost(string, tag = "2")] @@ -424,7 +424,7 @@ pub enum ActionName { BreakPaneLeft = 79, RenameSession = 80, LaunchPlugin = 81, - CliMessage = 82, + CliPipe = 82, } impl ActionName { /// String value of the enum field names used in the ProtoBuf definition. @@ -515,7 +515,7 @@ impl ActionName { ActionName::BreakPaneLeft => "BreakPaneLeft", ActionName::RenameSession => "RenameSession", ActionName::LaunchPlugin => "LaunchPlugin", - ActionName::CliMessage => "CliMessage", + ActionName::CliPipe => "CliPipe", } } /// Creates an enum from field names used in the ProtoBuf definition. @@ -603,7 +603,7 @@ impl ActionName { "BreakPaneLeft" => Some(Self::BreakPaneLeft), "RenameSession" => Some(Self::RenameSession), "LaunchPlugin" => Some(Self::LaunchPlugin), - "CliMessage" => Some(Self::CliMessage), + "CliPipe" => Some(Self::CliPipe), _ => None, } } diff --git a/zellij-utils/assets/prost/api.plugin_permission.rs b/zellij-utils/assets/prost/api.plugin_permission.rs index d142a8c2e..f928625da 100644 --- a/zellij-utils/assets/prost/api.plugin_permission.rs +++ b/zellij-utils/assets/prost/api.plugin_permission.rs @@ -8,7 +8,7 @@ pub enum PermissionType { OpenTerminalsOrPlugins = 4, WriteToStdin = 5, WebAccess = 6, - ReadCliMessages = 7, + ReadCliPipes = 7, MessageAndLaunchOtherPlugins = 8, } impl PermissionType { @@ -25,7 +25,7 @@ impl PermissionType { PermissionType::OpenTerminalsOrPlugins => "OpenTerminalsOrPlugins", PermissionType::WriteToStdin => "WriteToStdin", PermissionType::WebAccess => "WebAccess", - PermissionType::ReadCliMessages => "ReadCliMessages", + PermissionType::ReadCliPipes => "ReadCliPipes", PermissionType::MessageAndLaunchOtherPlugins => { "MessageAndLaunchOtherPlugins" } @@ -41,7 +41,7 @@ impl PermissionType { "OpenTerminalsOrPlugins" => Some(Self::OpenTerminalsOrPlugins), "WriteToStdin" => Some(Self::WriteToStdin), "WebAccess" => Some(Self::WebAccess), - "ReadCliMessages" => Some(Self::ReadCliMessages), + "ReadCliPipes" => Some(Self::ReadCliPipes), "MessageAndLaunchOtherPlugins" => Some(Self::MessageAndLaunchOtherPlugins), _ => None, } diff --git a/zellij-utils/src/data.rs b/zellij-utils/src/data.rs index ba1ad91dd..02ce8bbed 100644 --- a/zellij-utils/src/data.rs +++ b/zellij-utils/src/data.rs @@ -511,17 +511,6 @@ pub enum Event { // headers, // body, // context -// CliMessage { -// input_pipe_id: String, -// name: String, -// payload: Option<String>, // None => end of pipe -// args: Option<BTreeMap<String, String>>, -// }, -// MessageFromPlugin { -// name: String, -// payload: Option<String>, // None => end of pipe -// args: Option<BTreeMap<String, String>>, -// } } #[derive( @@ -549,7 +538,7 @@ pub enum Permission { OpenTerminalsOrPlugins, WriteToStdin, WebAccess, - ReadCliMessages, + ReadCliPipes, MessageAndLaunchOtherPlugins, } @@ -567,7 +556,7 @@ impl PermissionType { PermissionType::OpenTerminalsOrPlugins => "Start new terminals and plugins".to_owned(), PermissionType::WriteToStdin => "Write to standard input (STDIN)".to_owned(), PermissionType::WebAccess => "Make web requests".to_owned(), - PermissionType::ReadCliMessages => "Read messages from the command line".to_owned(), + PermissionType::ReadCliPipes => "Read pipes/messages from the command line".to_owned(), PermissionType::MessageAndLaunchOtherPlugins => "Send messages to and launch other plugins".to_owned(), } } @@ -1108,7 +1097,7 @@ pub enum HttpVerb { #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum PipeSource { - Cli(String), // String is the input_pipe_id of the CLI pipe (used for blocking/unblocking) + Cli(String), // String is the pipe_id of the CLI pipe (used for blocking/unblocking) Plugin(u32), // u32 is the lugin id } diff --git a/zellij-utils/src/errors.rs b/zellij-utils/src/errors.rs index 77777bcec..2176996d5 100644 --- a/zellij-utils/src/errors.rs +++ b/zellij-utils/src/errors.rs @@ -393,7 +393,7 @@ pub enum PluginContext { PermissionRequestResult, DumpLayout, LogLayoutToHd, - CliMessage, + CliPipe, Message, CachePluginEvents, MessageFromPlugin, diff --git a/zellij-utils/src/input/actions.rs b/zellij-utils/src/input/actions.rs index 6bd7e1a2e..cb9a1604a 100644 --- a/zellij-utils/src/input/actions.rs +++ b/zellij-utils/src/input/actions.rs @@ -258,9 +258,8 @@ pub enum Action { BreakPaneRight, BreakPaneLeft, RenameSession(String), - // TODO: rename to CLiPipe - CliMessage { - input_pipe_id: String, + CliPipe { + pipe_id: String, name: Option<String>, payload: Option<String>, args: Option<BTreeMap<String, String>>, @@ -617,9 +616,9 @@ impl Action { .map(|cwd| current_dir.join(cwd)) .or_else(|| Some(current_dir)); let skip_cache = skip_plugin_cache; - let input_pipe_id = Uuid::new_v4().to_string(); - Ok(vec![Action::CliMessage{ - input_pipe_id, + let pipe_id = Uuid::new_v4().to_string(); + Ok(vec![Action::CliPipe { + pipe_id, name, payload, args: args.map(|a| a.inner().clone()), // TODO: no clone somehow diff --git a/zellij-utils/src/plugin_api/action.proto b/zellij-utils/src/plugin_api/action.proto index d4d81ab1a..0ed5b3b7a 100644 --- a/zellij-utils/src/plugin_api/action.proto +++ b/zellij-utils/src/plugin_api/action.proto @@ -53,11 +53,11 @@ message Action { IdAndName rename_tab_payload = 44; string rename_session_payload = 45; LaunchOrFocusPluginPayload launch_plugin_payload = 46; - CliMessagePayload message_payload = 47; + CliPipePayload message_payload = 47; } } -message CliMessagePayload { +message CliPipePayload { optional string name = 1; string payload = 2; repeated NameAndValue args = 3; @@ -235,7 +235,7 @@ enum ActionName { BreakPaneLeft = 79; RenameSession = 80; LaunchPlugin = 81; - CliMessage = 82; + CliPipe = 82; } message Position { |