create config file/directory if it doesn't exist yet
This commit is contained in:
parent
eedc379c8d
commit
f1512e01c9
32
src/var.rs
32
src/var.rs
|
@ -31,6 +31,7 @@ pub const TOKEN_LESS_EQUALS: &str = "<=";
|
||||||
pub const TOKEN_NEGATE: &str = "~";
|
pub const TOKEN_NEGATE: &str = "~";
|
||||||
|
|
||||||
pub const DEFAULT_CHAT_SPEED: f32 = 10.0;
|
pub const DEFAULT_CHAT_SPEED: f32 = 10.0;
|
||||||
|
pub const DEFAULT_CONFIG_TOML: &str = include_str!("data/outfly.toml");
|
||||||
|
|
||||||
#[derive(Resource)]
|
#[derive(Resource)]
|
||||||
pub struct Settings {
|
pub struct Settings {
|
||||||
|
@ -472,6 +473,12 @@ fn file_is_readable(file_path: &str) -> bool {
|
||||||
.unwrap_or(false)
|
.unwrap_or(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn path_is_directory(file_path: &str) -> bool {
|
||||||
|
fs::metadata(file_path)
|
||||||
|
.map(|metadata| metadata.is_dir())
|
||||||
|
.unwrap_or(false)
|
||||||
|
}
|
||||||
|
|
||||||
fn get_prefs_path() -> Option<String> {
|
fn get_prefs_path() -> Option<String> {
|
||||||
let test = CONF_FILE;
|
let test = CONF_FILE;
|
||||||
if file_is_readable(test) {
|
if file_is_readable(test) {
|
||||||
|
@ -479,7 +486,30 @@ fn get_prefs_path() -> Option<String> {
|
||||||
}
|
}
|
||||||
if let Some(mut conf) = dirs::config_dir() {
|
if let Some(mut conf) = dirs::config_dir() {
|
||||||
conf.push("OutFly");
|
conf.push("OutFly");
|
||||||
|
if !conf.exists() {
|
||||||
|
match fs::create_dir_all(&conf) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(error) => {
|
||||||
|
eprintln!("Failed creating configuration directory: {error}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(test) = conf.to_str() {
|
||||||
|
if !path_is_directory(test) {
|
||||||
|
eprintln!("Failed creating configuration directory");
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
conf.push(CONF_FILE);
|
conf.push(CONF_FILE);
|
||||||
|
if !conf.exists() {
|
||||||
|
match fs::write(&conf, DEFAULT_CONFIG_TOML.to_string()) {
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(error) => {
|
||||||
|
eprintln!("Failed creating configuration file: {error}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if let Some(test) = conf.to_str() {
|
if let Some(test) = conf.to_str() {
|
||||||
if file_is_readable(test) {
|
if file_is_readable(test) {
|
||||||
return Some(test.to_string());
|
return Some(test.to_string());
|
||||||
|
@ -503,7 +533,7 @@ pub fn load_prefs() -> Preferences {
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
println!("Found no preference file, using default preferences.");
|
println!("Found no preference file, using default preferences.");
|
||||||
(include_str!("data/outfly.toml").to_string(), None)
|
(DEFAULT_CONFIG_TOML.to_string(), None)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
match toml.parse::<DocumentMut>() {
|
match toml.parse::<DocumentMut>() {
|
||||||
|
|
Loading…
Reference in a new issue