diff options
Diffstat (limited to 'cli/ops.rs')
-rw-r--r-- | cli/ops.rs | 29 |
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<'_>, |