summaryrefslogtreecommitdiff
path: root/cli/ops.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops.rs')
-rw-r--r--cli/ops.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/cli/ops.rs b/cli/ops.rs
index 77cfdfa7c..56569c37a 100644
--- a/cli/ops.rs
+++ b/cli/ops.rs
@@ -241,6 +241,7 @@ pub fn op_selector_std(inner_type: msg::Any) -> Option<CliDispatchFn> {
msg::Any::Stat => Some(op_stat),
msg::Any::Symlink => Some(op_symlink),
msg::Any::Truncate => Some(op_truncate),
+ msg::Any::HomeDir => Some(op_home_dir),
msg::Any::Utime => Some(op_utime),
msg::Any::Write => Some(op_write),
@@ -1718,6 +1719,34 @@ fn op_metrics(
))
}
+fn op_home_dir(
+ _state: &ThreadSafeState,
+ base: &msg::Base<'_>,
+ data: Option<PinnedBuf>,
+) -> CliOpResult {
+ assert!(data.is_none());
+ let cmd_id = base.cmd_id();
+
+ let builder = &mut FlatBufferBuilder::new();
+ let path = dirs::home_dir()
+ .unwrap_or_default()
+ .into_os_string()
+ .into_string()
+ .unwrap_or_default();
+ let path = Some(builder.create_string(&path));
+ let inner = msg::HomeDirRes::create(builder, &msg::HomeDirResArgs { path });
+
+ ok_buf(serialize_response(
+ cmd_id,
+ builder,
+ msg::BaseArgs {
+ inner: Some(inner.as_union_value()),
+ inner_type: msg::Any::HomeDirRes,
+ ..Default::default()
+ },
+ ))
+}
+
fn op_resources(
_state: &ThreadSafeState,
base: &msg::Base<'_>,