Allow to specify a path to the data file
This commit is contained in:
parent
7e17fb12c9
commit
9adc650661
1 changed files with 21 additions and 11 deletions
32
src/main.rs
32
src/main.rs
|
|
@ -1236,6 +1236,9 @@ struct Config {
|
||||||
|
|
||||||
#[serde(default = "person_2")]
|
#[serde(default = "person_2")]
|
||||||
person_2: String,
|
person_2: String,
|
||||||
|
|
||||||
|
#[serde(default)]
|
||||||
|
data_file: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Config {
|
impl Default for Config {
|
||||||
|
|
@ -1243,23 +1246,13 @@ impl Default for Config {
|
||||||
Self {
|
Self {
|
||||||
person_1: person_1(),
|
person_1: person_1(),
|
||||||
person_2: person_2(),
|
person_2: person_2(),
|
||||||
|
data_file: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> anyhow::Result<()> {
|
fn main() -> anyhow::Result<()> {
|
||||||
let project_dir = ProjectDirs::from("net", "traxys", "glaurung").ok_or(anyhow!(""))?;
|
let project_dir = ProjectDirs::from("net", "traxys", "glaurung").ok_or(anyhow!(""))?;
|
||||||
let state_dir = project_dir
|
|
||||||
.state_dir()
|
|
||||||
.ok_or(anyhow!("No state directory"))?;
|
|
||||||
std::fs::create_dir_all(state_dir)?;
|
|
||||||
|
|
||||||
let save_file = state_dir.join("data.json");
|
|
||||||
|
|
||||||
let save = match save_file.exists() {
|
|
||||||
false => Default::default(),
|
|
||||||
true => serde_json::from_reader(BufReader::new(File::open(&save_file)?))?,
|
|
||||||
};
|
|
||||||
|
|
||||||
let config_file = project_dir.config_dir().join("config.toml");
|
let config_file = project_dir.config_dir().join("config.toml");
|
||||||
let config: Config = match config_file.exists() {
|
let config: Config = match config_file.exists() {
|
||||||
|
|
@ -1270,6 +1263,23 @@ fn main() -> anyhow::Result<()> {
|
||||||
false => Config::default(),
|
false => Config::default(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let save_file = match &config.data_file {
|
||||||
|
None => {
|
||||||
|
let state_dir = project_dir
|
||||||
|
.state_dir()
|
||||||
|
.ok_or(anyhow!("No state directory"))?;
|
||||||
|
std::fs::create_dir_all(state_dir)?;
|
||||||
|
|
||||||
|
state_dir.join("data.json")
|
||||||
|
}
|
||||||
|
Some(p) => p.clone(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let save = match save_file.exists() {
|
||||||
|
false => Default::default(),
|
||||||
|
true => serde_json::from_reader(BufReader::new(File::open(&save_file)?))?,
|
||||||
|
};
|
||||||
|
|
||||||
let mut settings = Settings::with_flags(AppConfig {
|
let mut settings = Settings::with_flags(AppConfig {
|
||||||
save,
|
save,
|
||||||
save_file,
|
save_file,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue