Skip to content
Snippets Groups Projects
Commit 3237ed4d authored by Pulkit Goyal's avatar Pulkit Goyal
Browse files

rhg: split non_repo_config and `--config` loading in different functions

This will help us in better handling of error caused when trying to
load `--config` values.

Differential Revision: https://phab.mercurial-scm.org/D10837
parent 88119fff
No related branches found
No related tags found
No related merge requests found
......@@ -88,9 +88,7 @@
/// Load system and user configuration from various files.
///
/// This is also affected by some environment variables.
pub fn load(
cli_config_args: impl IntoIterator<Item = impl AsRef<[u8]>>,
) -> Result<Self, ConfigError> {
pub fn load_non_repo() -> Result<Self, ConfigError> {
let mut config = Self { layers: Vec::new() };
let opt_rc_path = env::var_os("HGRCPATH");
// HGRCPATH replaces system config
......@@ -133,4 +131,11 @@
}
}
}
Ok(config)
}
pub fn load_cli_args_config(
&mut self,
cli_config_args: impl IntoIterator<Item = impl AsRef<[u8]>>,
) -> Result<(), ConfigError> {
if let Some(layer) = ConfigLayer::parse_cli_args(cli_config_args)? {
......@@ -136,3 +141,3 @@
if let Some(layer) = ConfigLayer::parse_cli_args(cli_config_args)? {
config.layers.push(layer)
self.layers.push(layer)
}
......@@ -138,5 +143,5 @@
}
Ok(config)
Ok(())
}
fn add_trusted_dir(&mut self, path: &Path) -> Result<(), ConfigError> {
......
......@@ -126,8 +126,8 @@
})
});
let non_repo_config =
Config::load(early_args.config).unwrap_or_else(|error| {
let mut non_repo_config =
Config::load_non_repo().unwrap_or_else(|error| {
// Normally this is decided based on config, but we don’t have that
// available. As of this writing config loading never returns an
// "unsupported" error but that is not enforced by the type system.
......@@ -142,6 +142,20 @@
)
});
non_repo_config
.load_cli_args_config(early_args.config)
.unwrap_or_else(|error| {
exit(
&initial_current_dir,
&ui,
OnUnsupported::from_config(&ui, &non_repo_config),
Err(error.into()),
non_repo_config
.get_bool(b"ui", b"detailed-exit-code")
.unwrap_or(false),
)
});
if let Some(repo_path_bytes) = &early_args.repo {
lazy_static::lazy_static! {
static ref SCHEME_RE: regex::bytes::Regex =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment