Read about our upcoming Code of Conduct on this issue

Commit 443f7025 authored by Yuya Nishihara's avatar Yuya Nishihara
Browse files

rust-chg: add interface to run "validate" request

Differential Revision: https://phab.mercurial-scm.org/D8379
parent 82adc720c0a3
......@@ -5,15 +5,17 @@
//! cHg extensions to command server client.
use bytes::Bytes;
use std::ffi::OsStr;
use std::io;
use std::os::unix::ffi::OsStrExt;
use std::os::unix::io::AsRawFd;
use std::path::Path;
use tokio_hglib::protocol::OneShotRequest;
use tokio_hglib::protocol::{OneShotQuery, OneShotRequest};
use tokio_hglib::{Client, Connection};
use super::attachio::AttachIo;
use super::message;
use super::message::{self, Instruction};
use super::runcommand::ChgRunCommand;
use super::uihandler::SystemHandler;
......@@ -45,6 +47,19 @@ where
I: IntoIterator<Item = P>,
P: AsRef<OsStr>,
H: SystemHandler;
/// Validates if the server can run Mercurial commands with the expected
/// configuration.
///
/// The `args` should contain early command arguments such as `--config`
/// and `-R`.
///
/// Client-side environment must be sent prior to this request, by
/// `set_current_dir()` and `set_env_vars_os()`.
fn validate<I, P>(self, args: I) -> OneShotQuery<C, fn(Bytes) -> io::Result<Vec<Instruction>>>
where
I: IntoIterator<Item = P>,
P: AsRef<OsStr>;
}
impl<C> ChgClientExt<C> for Client<C>
......@@ -83,4 +98,17 @@ where
{
ChgRunCommand::with_client(self, handler, message::pack_args_os(args))
}
fn validate<I, P>(self, args: I) -> OneShotQuery<C, fn(Bytes) -> io::Result<Vec<Instruction>>>
where
I: IntoIterator<Item = P>,
P: AsRef<OsStr>,
{
OneShotQuery::start_with_args(
self,
b"validate",
message::pack_args_os(args),
message::parse_instructions,
)
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment