Mercurial > hg-stable
changeset 39979:045ea159418d
rust-chg: add interface to chdir the server
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Mon, 24 Sep 2018 19:06:30 +0900 |
parents | 74da9d999cd7 |
children | 6bdee4bc181a |
files | rust/chg/src/clientext.rs |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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<P>(self, dir: P) -> OneShotRequest<C> + where P: AsRef<Path>; + /// Runs the specified Mercurial command with cHg extension. fn run_command_chg<I, P, H>(self, handler: H, args: I) -> ChgRunCommand<C, H> where I: IntoIterator<Item = P>, @@ -41,6 +48,12 @@ AttachIo::with_client(self, stdin, stdout, Some(stderr)) } + fn set_current_dir<P>(self, dir: P) -> OneShotRequest<C> + where P: AsRef<Path>, + { + OneShotRequest::start_with_args(self, b"chdir", dir.as_ref().as_os_str().as_bytes()) + } + fn run_command_chg<I, P, H>(self, handler: H, args: I) -> ChgRunCommand<C, H> where I: IntoIterator<Item = P>, P: AsRef<OsStr>,