mirror of
https://github.com/djibux/BoilR.git
synced 2026-09-01 05:53:41 +02:00
macOS Support (#18)
* replace target_os = "linux" with target_family = "unix" * check correct dir for macos steam files
This commit is contained in:
@@ -28,7 +28,7 @@ impl Platform<ManifestItem, EpicGamesManifestsError> for EpicPlatform {
|
||||
get_egs_manifests(&self.settings)
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool {
|
||||
self.settings.create_symlinks
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ fn get_manifest_dir_path(
|
||||
}
|
||||
|
||||
pub fn get_default_location() -> Option<PathBuf> {
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
{
|
||||
//No path defined for epic gamestore, and we cannot guess on linux
|
||||
None
|
||||
|
||||
@@ -148,7 +148,7 @@ mod tests {
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
assert_eq!(shortcut.exe, "\"C:\\Games\\MarvelGOTG\\retail/gotg.exe\"");
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
assert_eq!(shortcut.exe, "\"C:\\Games\\MarvelGOTG/retail/gotg.exe\"");
|
||||
|
||||
assert_eq!(shortcut.launch_options, "");
|
||||
|
||||
+1
-1
@@ -5,6 +5,6 @@ pub struct EpicGamesLauncherSettings {
|
||||
pub enabled: bool,
|
||||
pub location: Option<String>,
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
pub create_symlinks: bool,
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ impl Platform<GogShortcut, GogErrors> for GogPlatform {
|
||||
"Gog"
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool {
|
||||
self.settings.create_symlinks
|
||||
}
|
||||
@@ -41,7 +41,7 @@ impl Platform<GogShortcut, GogErrors> for GogPlatform {
|
||||
return Err(GogErrors::ConfigFileNotFound { path: config_path });
|
||||
}
|
||||
let install_locations = get_install_locations(config_path)?;
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
let install_locations = if let Some(wine_c_drive) = &self.settings.wine_c_drive {
|
||||
fix_paths(wine_c_drive, install_locations)
|
||||
} else {
|
||||
@@ -113,12 +113,12 @@ impl Platform<GogShortcut, GogErrors> for GogPlatform {
|
||||
None => folder_path.to_string(),
|
||||
};
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
let working_dir = working_dir.replace("\\", "/");
|
||||
|
||||
let full_path_string = full_path.to_string();
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
let full_path_string = full_path_string.replace("\\", "/");
|
||||
|
||||
let shortcut = GogShortcut {
|
||||
@@ -151,7 +151,7 @@ impl Platform<GogShortcut, GogErrors> for GogPlatform {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn fix_paths(wine_c_drive: &str, paths: Vec<String>) -> Vec<String> {
|
||||
paths
|
||||
.iter()
|
||||
@@ -191,7 +191,7 @@ pub fn default_location() -> PathBuf {
|
||||
let program_data = std::env::var(key).expect("Expected a APPDATA variable to be defined");
|
||||
Path::new(&program_data).join("GOG.com").join("Galaxy")
|
||||
}
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
{
|
||||
let home = std::env::var("HOME").expect("Expected a home variable to be defined");
|
||||
Path::new(&home).join("Games/gog-galaxy/drive_c/ProgramData/GOG.com/Galaxy")
|
||||
|
||||
@@ -5,6 +5,6 @@ pub struct GogSettings {
|
||||
pub enabled: bool,
|
||||
pub location: Option<String>,
|
||||
pub wine_c_drive: Option<String>,
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
pub create_symlinks: bool,
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ impl Platform<ItchGame, ItchErrors> for ItchPlatform {
|
||||
Ok(res)
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool {
|
||||
self.settings.create_symlinks
|
||||
}
|
||||
@@ -92,7 +92,7 @@ fn dbpath_to_game(paths: &DbPaths<'_>) -> Option<ItchGame> {
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
pub fn get_default_location() -> String {
|
||||
//If we don't have a home drive we have to just die
|
||||
let home = std::env::var("HOME").expect("Expected a home variable to be defined");
|
||||
|
||||
@@ -4,6 +4,6 @@ use serde::{Deserialize, Serialize};
|
||||
pub struct ItchSettings {
|
||||
pub enabled: bool,
|
||||
pub location: Option<String>,
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
pub create_symlinks: bool,
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ impl Platform<LegendaryGame, Box<dyn Error>> for LegendaryPlatform {
|
||||
Ok(legendary_ouput)
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ impl Platform<OriginGame, OriginErrors> for OriginPlatform {
|
||||
"Origin"
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool {
|
||||
false
|
||||
}
|
||||
@@ -106,7 +106,7 @@ fn parse_id_from_file(i: &str) -> nom::IResult<&str, &str> {
|
||||
take_until("&")(i)
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
pub fn get_default_location() -> String {
|
||||
//TODO implement this for linux:
|
||||
// https://www.toptensoftware.com/blog/running-ea-origin-games-under-linux-via-steam-and-proton/
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ where
|
||||
|
||||
fn settings_valid(&self) -> SettingsValidity;
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool;
|
||||
}
|
||||
|
||||
|
||||
@@ -118,6 +118,18 @@ pub fn get_default_location() -> Result<String, Box<dyn Error>> {
|
||||
.unwrap_or(""),
|
||||
)
|
||||
};
|
||||
#[cfg(target_os = "macos")]
|
||||
let path_string = {
|
||||
let home = std::env::var("HOME")?;
|
||||
String::from(
|
||||
Path::new(&home)
|
||||
.join("Library")
|
||||
.join("Application Support")
|
||||
.join("Steam")
|
||||
.to_str()
|
||||
.unwrap_or(""),
|
||||
)
|
||||
};
|
||||
Ok(path_string)
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
mod symlinks;
|
||||
mod synchronization;
|
||||
|
||||
|
||||
@@ -63,9 +63,9 @@ fn fix_shortcut_icons(user: &SteamUsersInfo, shortcuts: &mut Vec<ShortcutOwned>)
|
||||
.join("config")
|
||||
.join("grid");
|
||||
for shortcut in shortcuts {
|
||||
#[cfg(not(target_os = "linux"))]
|
||||
#[cfg(not(target_family = "unix"))]
|
||||
let replace_icon = shortcut.icon.trim().eq("");
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
let replace_icon = shortcut.icon.trim().eq("") || shortcut.icon.eq(&shortcut.exe);
|
||||
if replace_icon {
|
||||
let app_id = steam_shortcuts_util::app_id_generator::calculate_app_id(
|
||||
@@ -164,7 +164,7 @@ where
|
||||
return;
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
if platform.create_symlinks() {
|
||||
let name = platform.name();
|
||||
super::symlinks::ensure_links_folder_created(name);
|
||||
@@ -187,7 +187,7 @@ where
|
||||
if !shortcut_owned.tags.contains(&boilr_tag) {
|
||||
shortcut_owned.tags.push(boilr_tag.clone());
|
||||
}
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
let shortcut_owned = if platform.create_symlinks() {
|
||||
crate::sync::symlinks::create_sym_links(&shortcut_owned)
|
||||
} else {
|
||||
|
||||
+2
-2
@@ -172,12 +172,12 @@ fn update_ui_with_settings(ui: &mut UserInterface, settings: &Settings) {
|
||||
.unwrap_or(default_gog_location),
|
||||
);
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
{
|
||||
ui.gog_winedrive_input
|
||||
.set_value(&settings.gog.wine_c_drive.clone().unwrap_or("".to_string()));
|
||||
}
|
||||
#[cfg(not(target_os = "linux"))]
|
||||
#[cfg(not(target_family = "unix"))]
|
||||
{
|
||||
ui.gog_winedrive_input.deactivate();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ pub struct Uplay {
|
||||
|
||||
impl Platform<Game, Box<dyn Error>> for Uplay {
|
||||
fn enabled(&self) -> bool {
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
{
|
||||
false
|
||||
}
|
||||
@@ -28,7 +28,7 @@ impl Platform<Game, Box<dyn Error>> for Uplay {
|
||||
}
|
||||
|
||||
fn get_shortcuts(&self) -> Result<Vec<Game>, Box<dyn Error>> {
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
{
|
||||
Ok(vec![])
|
||||
}
|
||||
@@ -38,7 +38,7 @@ impl Platform<Game, Box<dyn Error>> for Uplay {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(target_family = "unix")]
|
||||
fn create_symlinks(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user