yuja created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  This is also needed to run config validation.
  
  The "validate" request and its response handling will be implemented in
  the next batch.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8364

AFFECTED FILES
  rust/chg/src/clientext.rs
  rust/chg/src/locator.rs

CHANGE DETAILS

diff --git a/rust/chg/src/locator.rs b/rust/chg/src/locator.rs
--- a/rust/chg/src/locator.rs
+++ b/rust/chg/src/locator.rs
@@ -24,7 +24,7 @@
 use super::message::ServerSpec;
 use super::procutil;
 
-const REQUIRED_SERVER_CAPABILITIES: &[&str] = &["attachio", "chdir", 
"runcommand"];
+const REQUIRED_SERVER_CAPABILITIES: &[&str] = &["attachio", "chdir", 
"runcommand", "setenv"];
 
 /// Helper to connect to and spawn a server process.
 #[derive(Clone, Debug)]
@@ -86,6 +86,11 @@
                     .set_current_dir(&loc.current_dir)
                     .map(|client| (loc, client))
             })
+            .and_then(|(loc, client)| {
+                client
+                    .set_env_vars_os(loc.env_vars.iter().cloned())
+                    .map(|client| (loc, client))
+            })
     }
 
     /// Spawns new server process and connects to it.
diff --git a/rust/chg/src/clientext.rs b/rust/chg/src/clientext.rs
--- a/rust/chg/src/clientext.rs
+++ b/rust/chg/src/clientext.rs
@@ -33,6 +33,12 @@
     where
         P: AsRef<Path>;
 
+    /// Updates the environment variables of the server.
+    fn set_env_vars_os<I, P>(self, vars: I) -> OneShotRequest<C>
+    where
+        I: IntoIterator<Item = (P, P)>,
+        P: AsRef<OsStr>;
+
     /// Runs the specified Mercurial command with cHg extension.
     fn run_command_chg<I, P, H>(self, handler: H, args: I) -> ChgRunCommand<C, 
H>
     where
@@ -61,6 +67,14 @@
         OneShotRequest::start_with_args(self, b"chdir", 
dir.as_ref().as_os_str().as_bytes())
     }
 
+    fn set_env_vars_os<I, P>(self, vars: I) -> OneShotRequest<C>
+    where
+        I: IntoIterator<Item = (P, P)>,
+        P: AsRef<OsStr>,
+    {
+        OneShotRequest::start_with_args(self, b"setenv", 
message::pack_env_vars_os(vars))
+    }
+
     fn run_command_chg<I, P, H>(self, handler: H, args: I) -> ChgRunCommand<C, 
H>
     where
         I: IntoIterator<Item = P>,



To: yuja, #hg-reviewers
Cc: mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to