Skip to content

Commit

Permalink
Move config directory
Browse files Browse the repository at this point in the history
This changes the config directory from the `dirs::cache_dir` to `dirs::config_dir`. It does however keep the cache directory as the default logging directory, as it seems a better fit.

It also adds a function, `migrate_config`, which is called at startup to move directory entries inside the "old" config directory to the "new" one (but it skips moving log files). The intention is that this function can be removed after a few releases when the likelihood of someone upgrading from 0.6.0 or earlier is fairly small.

Fixes extrawurst#98
  • Loading branch information
jonstodle committed Jun 14, 2020
1 parent d67a240 commit a2a7825
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 4 deletions.
8 changes: 6 additions & 2 deletions THEMES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@ default on light terminal:
![](assets/light-theme.png)

to change the colors of the program you have to modify `theme.ron` file
[Ron format](https://github.com/ron-rs/ron) located at config path (same as [log path](README.md#diagnostics)).
[Ron format](https://github.com/ron-rs/ron) located at config path. The path differs depending on the operating system:

* `$HOME/Library/Preferences/gitui/theme.ron` (mac)
* `$XDG_CONFIG_HOME/gitui/theme.ron` (linux using XDG)
* `$HOME/.config/gitui/theme.ron` (linux)

Valid colors can be found in [ColorDef](./src/ui/style.rs#ColorDef) struct. note that rgb colors might not be supported
in every terminal.
in every terminal.
35 changes: 33 additions & 2 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ fn main() -> Result<()> {
return Ok(());
}

// TODO: To be removed in a future version, when upgrading from 0.6.x or earlier is unlikely
migrate_config()?;

setup_terminal()?;
defer! {
shutdown_terminal().expect("shutdown failed");
Expand Down Expand Up @@ -202,7 +205,26 @@ fn start_terminal<W: Write>(
Ok(terminal)
}

fn get_app_config_path() -> Result<PathBuf> {
fn migrate_config() -> Result<()> {
let cache_path: PathBuf = get_app_cache_path()?;

let entries = cache_path
.read_dir()?
.flat_map(|dir_entry| dir_entry)
.filter(|entry| {
!entry.file_name().to_string_lossy().ends_with(".log")
});

for entry in entries {
let mut config_path: PathBuf = get_app_config_path()?;
config_path.push(entry.file_name());
fs::rename(entry.path(), config_path)?;
}

Ok(())
}

fn get_app_cache_path() -> Result<PathBuf> {
let mut path = dirs::cache_dir()
.ok_or_else(|| anyhow!("failed to find os cache dir."))?;

Expand All @@ -211,8 +233,17 @@ fn get_app_config_path() -> Result<PathBuf> {
Ok(path)
}

fn get_app_config_path() -> Result<PathBuf> {
let mut path = dirs::config_dir()
.ok_or_else(|| anyhow!("failed to find os config dir."))?;

path.push("gitui");
fs::create_dir_all(&path)?;
Ok(path)
}

fn setup_logging() -> Result<()> {
let mut path = get_app_config_path()?;
let mut path = get_app_cache_path()?;
path.push("gitui.log");

let _ = WriteLogger::init(
Expand Down

0 comments on commit a2a7825

Please sign in to comment.