# HG changeset patch # User Yuya Nishihara # Date 1537783590 -32400 # Node ID 045ea159418d1c1e2a0ec0c3992789337249b1e4 # Parent 74da9d999cd766ce4c04174ddc9b398658c7446b rust-chg: add interface to chdir the server diff -r 74da9d999cd7 -r 045ea159418d rust/chg/src/clientext.rs --- a/rust/chg/src/clientext.rs Mon Sep 24 18:57:54 2018 +0900 +++ b/rust/chg/src/clientext.rs Mon Sep 24 19:06:30 2018 +0900 @@ -6,8 +6,11 @@ //! cHg extensions to command server client. use std::ffi::OsStr; +use std::os::unix::ffi::OsStrExt; use std::os::unix::io::AsRawFd; +use std::path::Path; use tokio_hglib::{Client, Connection}; +use tokio_hglib::protocol::OneShotRequest; use super::attachio::AttachIo; use super::message; @@ -23,6 +26,10 @@ O: AsRawFd, E: AsRawFd; + /// Changes the working directory of the server. + fn set_current_dir

(self, dir: P) -> OneShotRequest + where P: AsRef; + /// Runs the specified Mercurial command with cHg extension. fn run_command_chg(self, handler: H, args: I) -> ChgRunCommand where I: IntoIterator, @@ -41,6 +48,12 @@ AttachIo::with_client(self, stdin, stdout, Some(stderr)) } + fn set_current_dir

(self, dir: P) -> OneShotRequest + where P: AsRef, + { + OneShotRequest::start_with_args(self, b"chdir", dir.as_ref().as_os_str().as_bytes()) + } + fn run_command_chg(self, handler: H, args: I) -> ChgRunCommand where I: IntoIterator, P: AsRef,