aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Wilm <joe@jwilm.com>2017-07-07 10:51:03 -0700
committerJoe Wilm <joe@jwilm.com>2017-07-07 10:54:28 -0700
commit1ec53bc17992ae87d1c8c201a906157bcc800ef1 (patch)
treeb0799fd1f1672af0b745c9af6341a7826581806f
parentc67f0ddf34b630c538caf6b6d4f6e801a6c0bcb6 (diff)
downloadalacritty-config-improvements.tar.gz
alacritty-config-improvements.zip
Minor cleanup in config.rsconfig-improvements
Adds logging at default verbosity when writing new config file.
-rw-r--r--src/config.rs30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/config.rs b/src/config.rs
index 957557f9..727c5ed0 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -244,12 +244,12 @@ fn default_padding() -> Delta {
}
#[cfg(not(target_os="macos"))]
-static DEFAULT_ALACRITTY_CONFIG: &'static str = include_str!("../alacritty.yml");
+static DEFAULT_CONFIG: &'static str = include_str!("../alacritty.yml");
#[cfg(target_os="macos")]
-static DEFAULT_ALACRITTY_CONFIG: &'static str = include_str!("../alacritty_macos.yml");
+static DEFAULT_CONFIG: &'static str = include_str!("../alacritty_macos.yml");
fn default_config() -> Config {
- serde_yaml::from_str(DEFAULT_ALACRITTY_CONFIG)
+ serde_yaml::from_str(DEFAULT_CONFIG)
.expect("default config is valid")
}
@@ -993,11 +993,13 @@ impl Config {
/// 2. $XDG_CONFIG_HOME/alacritty.yml
/// 3. $HOME/.config/alacritty/alacritty.yml
/// 4. $HOME/.alacritty.yml
- pub fn installed_config() -> Option<Cow<'static, Path>> {
+ pub fn existing_path() -> Option<Cow<'static, Path>> {
// Try using XDG location by default
::xdg::BaseDirectories::with_prefix("alacritty")
.ok()
+ // $XDG_CONFIG_HOME/alacritty/alacritty.yml
.and_then(|xdg| xdg.find_config_file("alacritty.yml"))
+ // $XDG_CONFIG_HOME/alacritty.yml
.or_else(|| {
::xdg::BaseDirectories::new().ok().and_then(|fallback| {
fallback.find_config_file("alacritty.yml")
@@ -1023,9 +1025,13 @@ impl Config {
pub fn write_defaults() -> io::Result<Cow<'static, Path>> {
let path = ::xdg::BaseDirectories::with_prefix("alacritty")
- .map_err(|err| io::Error::new(io::ErrorKind::NotFound, ::std::error::Error::description(&err)))
+ .map_err(|err| io::Error::new(io::ErrorKind::NotFound, Box::new(err)))
.and_then(|p| p.place_config_file("alacritty.yml"))?;
- File::create(&path)?.write_all(DEFAULT_ALACRITTY_CONFIG.as_bytes())?;
+
+ File::create(&path)?
+ .write_all(DEFAULT_CONFIG.as_bytes())?;
+ warn!("Wrote default config to {}", path.display());
+
Ok(path.into())
}
@@ -1129,13 +1135,15 @@ impl Config {
/// generate a default file. If an empty configuration file is given, i.e.
/// /dev/null, we load the compiled-in defaults.
pub fn load(options: &::cli::Options) -> Config {
+ // Get config path
let config_path = options.config_path()
- .or_else(|| Config::installed_config())
+ .or_else(|| Config::existing_path())
.unwrap_or_else(|| {
Config::write_defaults()
.unwrap_or_else(|err| die!("Write defaults config failure: {}", err))
});
+ // Load config from path
Config::load_from(&*config_path)
.map(|config| {
if let Some(path) = config.path().as_ref() {
@@ -1147,12 +1155,8 @@ impl Config {
.unwrap_or_else(|err| {
use self::Error::*;
match err {
- NotFound => {
- die!("Config file not found at: {}", config_path.display());
- },
- Empty => {
- err_println!("Empty config; Loading defaults");
- Config::default()
+ NotFound | Empty => {
+ die!("Config file empty or not found at: {}", config_path.display());
},
_ => die!("{}", err),
}