Merge pull request #32 from R1kaB3rN/wineprefix

Remove requirement for setting WINEPREFIX
This commit is contained in:
Thomas Crider 2024-02-20 10:39:48 -07:00 committed by GitHub
commit 8ed1f0f5d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 12 deletions

View File

@ -19,6 +19,8 @@ def parse_args() -> Union[Namespace, Tuple[str, List[str]]]: # noqa: D103
exe: str = Path(__file__).name exe: str = Path(__file__).name
usage: str = f""" usage: str = f"""
example usage: example usage:
GAMEID= {exe} /home/foo/example.exe
WINEPREFIX= GAMEID= {exe} /home/foo/example.exe
WINEPREFIX= GAMEID= PROTONPATH= {exe} /home/foo/example.exe WINEPREFIX= GAMEID= PROTONPATH= {exe} /home/foo/example.exe
WINEPREFIX= GAMEID= PROTONPATH= {exe} /home/foo/example.exe -opengl WINEPREFIX= GAMEID= PROTONPATH= {exe} /home/foo/example.exe -opengl
WINEPREFIX= GAMEID= PROTONPATH= {exe} "" WINEPREFIX= GAMEID= PROTONPATH= {exe} ""
@ -103,24 +105,38 @@ def check_env(
return toml return toml
if "WINEPREFIX" not in os.environ:
err: str = "Environment variable not set or not a directory: WINEPREFIX"
raise ValueError(err)
if not Path(os.environ["WINEPREFIX"]).expanduser().is_dir():
Path(os.environ["WINEPREFIX"]).mkdir(parents=True)
env["WINEPREFIX"] = os.environ["WINEPREFIX"]
if "GAMEID" not in os.environ: if "GAMEID" not in os.environ:
err: str = "Environment variable not set: GAMEID" err: str = "Environment variable not set: GAMEID"
raise ValueError(err) raise ValueError(err)
env["GAMEID"] = os.environ["GAMEID"] env["GAMEID"] = os.environ["GAMEID"]
if (
"WINEPREFIX" not in os.environ
or not Path(os.environ["WINEPREFIX"]).expanduser().is_dir()
):
# Automatically create a prefix for the user if WINEPREFIX is not set
# The GAMEID will be the name of the dir
pfx: Path = Path.home().joinpath("Games/ULWGL/" + env["GAMEID"])
pfx.mkdir(parents=True, exist_ok=True)
os.environ["WINEPREFIX"] = pfx.as_posix()
env["WINEPREFIX"] = os.environ["WINEPREFIX"]
else:
env["WINEPREFIX"] = os.environ["WINEPREFIX"]
if "PROTONPATH" not in os.environ: if "PROTONPATH" not in os.environ:
os.environ["PROTONPATH"] = "" os.environ["PROTONPATH"] = ""
get_ulwgl_proton(env) get_ulwgl_proton(env)
elif Path("~/.local/share/Steam/compatibilitytools.d/" + os.environ["PROTONPATH"]).expanduser().is_dir(): elif (
env["PROTONPATH"] = Path("~/.local/share/Steam/compatibilitytools.d/").expanduser().joinpath(os.environ["PROTONPATH"]) Path("~/.local/share/Steam/compatibilitytools.d/" + os.environ["PROTONPATH"])
.expanduser()
.is_dir()
):
env["PROTONPATH"] = (
Path("~/.local/share/Steam/compatibilitytools.d/")
.expanduser()
.joinpath(os.environ["PROTONPATH"])
)
elif not Path(os.environ["PROTONPATH"]).expanduser().is_dir(): elif not Path(os.environ["PROTONPATH"]).expanduser().is_dir():
os.environ["PROTONPATH"] = "" os.environ["PROTONPATH"] = ""
get_ulwgl_proton(env) get_ulwgl_proton(env)

View File

@ -1553,8 +1553,11 @@ class TestGameLauncher(unittest.TestCase):
ulwgl_run.check_env(self.env) ulwgl_run.check_env(self.env)
def test_env_vars_none(self): def test_env_vars_none(self):
"""Tests check_env when setting no env vars.""" """Tests check_env when setting no env vars.
with self.assertRaisesRegex(ValueError, "WINEPREFIX"):
GAMEID should be the only strictly required env var
"""
with self.assertRaisesRegex(ValueError, "GAMEID"):
ulwgl_run.check_env(self.env) ulwgl_run.check_env(self.env)