Improve playnite errormessages (#325)

This commit is contained in:
Philip Kristoffersen
2023-01-10 06:52:59 +01:00
committed by GitHub
parent 8dc87f9343
commit e92196e701
+19 -13
View File
@@ -86,17 +86,20 @@ impl PlaynitePlatform {
fn get_playnite_games(&self) -> eyre::Result<Vec<PlayniteGame>> { fn get_playnite_games(&self) -> eyre::Result<Vec<PlayniteGame>> {
let mut res = vec![]; let mut res = vec![];
let (launcher_path, games_file_path) = self.find_paths()?; let (launcher_path, games_file_path) = self.find_paths()?;
if games_file_path.exists() { let games_bytes = std::fs::read(&games_file_path).map_err(|e| match e.raw_os_error() {
let games_bytes = std::fs::read(&games_file_path)?; Some(32) => {
let (_, games) = parse_db(&games_bytes).map_err(|e| eyre::eyre!(e.to_string()))?; eyre::format_err!("It looks like Playnite is running and preventing BoilR from reading its database, please ensure that Playnite closed.")
for game in games { }
if game.installed || !self.settings.installed_only { _ => eyre::format_err!("Could not get Playnite games: {:?}", e),
res.push(PlayniteGame { })?;
id: game.id, let (_, games) = parse_db(&games_bytes).map_err(|e| eyre::eyre!(e.to_string()))?;
launcher_path: launcher_path.clone(), for game in games {
name: game.name, if game.installed || !self.settings.installed_only {
}); res.push(PlayniteGame {
} id: game.id,
launcher_path: launcher_path.clone(),
name: game.name,
});
} }
} }
Ok(res) Ok(res)
@@ -105,8 +108,11 @@ impl PlaynitePlatform {
fn find_paths(&self) -> Result<(PathBuf, PathBuf), color_eyre::Report> { fn find_paths(&self) -> Result<(PathBuf, PathBuf), color_eyre::Report> {
if self.settings.use_portalbe_version { if self.settings.use_portalbe_version {
let launcher_path = Path::new(&self.settings.portable_launcher_path).to_path_buf(); let launcher_path = Path::new(&self.settings.portable_launcher_path).to_path_buf();
let p = launcher_path.parent().unwrap_or_else(||Path::new("")); let games_file_path = launcher_path
let games_file_path = p.join("library").join("games.db"); .parent()
.unwrap_or_else(|| Path::new(""))
.join("library")
.join("games.db");
Ok((launcher_path, games_file_path)) Ok((launcher_path, games_file_path))
} else { } else {
let app_data_local_path = env::var("LOCALAPPDATA")?; let app_data_local_path = env::var("LOCALAPPDATA")?;