mirror of
https://github.com/zellij-org/zellij.git
synced 2024-11-26 22:15:19 +03:00
d780bd9105
* prototype - working with message from the cli * prototype - pipe from the CLI to plugins * prototype - pipe from the CLI to plugins and back again * prototype - working with better cli interface * prototype - working after removing unused stuff * prototype - working with launching plugin if it is not launched, also fixed event ordering * refactor: change message to cli-message * prototype - allow plugins to send messages to each other * fix: allow cli messages to send plugin parameters (and implement backpressure) * fix: use input_pipe_id to identify cli pipes instead of their message name * fix: come cleanups and add skip_cache parameter * fix: pipe/client-server communication robustness * fix: leaking messages between plugins while loading * feat: allow plugins to specify how a new plugin instance is launched when sending messages * fix: add permissions * refactor: adjust cli api * fix: improve cli plugin loading error messages * docs: cli pipe * fix: take plugin configuration into account when messaging between plugins * refactor: pipe message protobuf interface * refactor: update(event) -> pipe * refactor - rename CliMessage to CliPipe * fix: add is_private to pipes and change some naming * refactor - cli client * refactor: various cleanups * style(fmt): rustfmt * fix(pipes): backpressure across multiple plugins * style: some cleanups * style(fmt): rustfmt * style: fix merge conflict mistake * style(wording): clarify pipe permission
50 lines
2.1 KiB
Rust
50 lines
2.1 KiB
Rust
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
|
|
#[repr(i32)]
|
|
pub enum PermissionType {
|
|
ReadApplicationState = 0,
|
|
ChangeApplicationState = 1,
|
|
OpenFiles = 2,
|
|
RunCommands = 3,
|
|
OpenTerminalsOrPlugins = 4,
|
|
WriteToStdin = 5,
|
|
WebAccess = 6,
|
|
ReadCliPipes = 7,
|
|
MessageAndLaunchOtherPlugins = 8,
|
|
}
|
|
impl PermissionType {
|
|
/// String value of the enum field names used in the ProtoBuf definition.
|
|
///
|
|
/// The values are not transformed in any way and thus are considered stable
|
|
/// (if the ProtoBuf definition does not change) and safe for programmatic use.
|
|
pub fn as_str_name(&self) -> &'static str {
|
|
match self {
|
|
PermissionType::ReadApplicationState => "ReadApplicationState",
|
|
PermissionType::ChangeApplicationState => "ChangeApplicationState",
|
|
PermissionType::OpenFiles => "OpenFiles",
|
|
PermissionType::RunCommands => "RunCommands",
|
|
PermissionType::OpenTerminalsOrPlugins => "OpenTerminalsOrPlugins",
|
|
PermissionType::WriteToStdin => "WriteToStdin",
|
|
PermissionType::WebAccess => "WebAccess",
|
|
PermissionType::ReadCliPipes => "ReadCliPipes",
|
|
PermissionType::MessageAndLaunchOtherPlugins => {
|
|
"MessageAndLaunchOtherPlugins"
|
|
}
|
|
}
|
|
}
|
|
/// Creates an enum from field names used in the ProtoBuf definition.
|
|
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
|
|
match value {
|
|
"ReadApplicationState" => Some(Self::ReadApplicationState),
|
|
"ChangeApplicationState" => Some(Self::ChangeApplicationState),
|
|
"OpenFiles" => Some(Self::OpenFiles),
|
|
"RunCommands" => Some(Self::RunCommands),
|
|
"OpenTerminalsOrPlugins" => Some(Self::OpenTerminalsOrPlugins),
|
|
"WriteToStdin" => Some(Self::WriteToStdin),
|
|
"WebAccess" => Some(Self::WebAccess),
|
|
"ReadCliPipes" => Some(Self::ReadCliPipes),
|
|
"MessageAndLaunchOtherPlugins" => Some(Self::MessageAndLaunchOtherPlugins),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|