mirror of
https://github.com/alacritty/alacritty
synced 2024-10-14 19:53:00 +00:00
Fix CLI arguments without config file
Since we only applied the CLI arguments as overrides to the configuration file after the file was loaded, all CLI arguments that are stored on the config would be dropped without a configuration file in place. This also makes sure that all configuration file config overrides are still loaded if the configuration file could not be loaded for any reason, since there's no reason why we'd just drop everything in that case.
This commit is contained in:
parent
56cff18486
commit
539855cdb9
|
@ -97,18 +97,20 @@ impl From<serde_yaml::Error> for Error {
|
|||
|
||||
/// Load the configuration file.
|
||||
pub fn load(options: &Options) -> Config {
|
||||
// Get config path.
|
||||
let config_path = match options.config_path().or_else(installed_config) {
|
||||
Some(path) => path,
|
||||
None => {
|
||||
info!(target: LOG_TARGET_CONFIG, "No config file found; using default");
|
||||
return Config::default();
|
||||
},
|
||||
};
|
||||
|
||||
// Load config, falling back to the default on error.
|
||||
let config_options = options.config_options().clone();
|
||||
let mut config = load_from(&config_path, config_options).unwrap_or_default();
|
||||
let config_path = options.config_path().or_else(installed_config);
|
||||
|
||||
if config_path.is_none() {
|
||||
info!(target: LOG_TARGET_CONFIG, "No config file found; using default");
|
||||
}
|
||||
|
||||
// Load the config using the following fallback behavior:
|
||||
// - Config path + CLI overrides
|
||||
// - CLI overrides
|
||||
// - Default
|
||||
let mut config = config_path
|
||||
.and_then(|config_path| load_from(&config_path, config_options.clone()).ok())
|
||||
.unwrap_or_else(|| Config::deserialize(config_options).unwrap_or_default());
|
||||
|
||||
// Override config with CLI options.
|
||||
options.override_config(&mut config);
|
||||
|
|
Loading…
Reference in a new issue