summaryrefslogtreecommitdiffstats
path: root/zellij-utils/src/plugin_api/file.rs
diff options
context:
space:
mode:
Diffstat (limited to 'zellij-utils/src/plugin_api/file.rs')
-rw-r--r--zellij-utils/src/plugin_api/file.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/zellij-utils/src/plugin_api/file.rs b/zellij-utils/src/plugin_api/file.rs
new file mode 100644
index 000000000..7c06aa8e0
--- /dev/null
+++ b/zellij-utils/src/plugin_api/file.rs
@@ -0,0 +1,30 @@
+pub use super::generated_api::api::file::File as ProtobufFile;
+use crate::data::FileToOpen;
+
+use std::convert::TryFrom;
+use std::path::PathBuf;
+
+impl TryFrom<ProtobufFile> for FileToOpen {
+ type Error = &'static str;
+ fn try_from(protobuf_file: ProtobufFile) -> Result<Self, &'static str> {
+ let path = PathBuf::from(protobuf_file.path);
+ let line_number = protobuf_file.line_number.map(|l| l as usize);
+ let cwd = protobuf_file.cwd.map(|c| PathBuf::from(c));
+ Ok(FileToOpen {
+ path,
+ line_number,
+ cwd,
+ })
+ }
+}
+
+impl TryFrom<FileToOpen> for ProtobufFile {
+ type Error = &'static str;
+ fn try_from(file_to_open: FileToOpen) -> Result<Self, &'static str> {
+ Ok(ProtobufFile {
+ path: file_to_open.path.display().to_string(),
+ line_number: file_to_open.line_number.map(|l| l as i32),
+ cwd: file_to_open.cwd.map(|c| c.display().to_string()),
+ })
+ }
+}