Add version checking logic
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import shlex
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
from gi.repository import Adw, Gio, GLib, Gtk
|
from gi.repository import Adw, Gio, GLib, Gtk
|
||||||
@@ -66,7 +67,11 @@ class DetailsWindow(Adw.Window):
|
|||||||
self.name.set_text(self.game.name)
|
self.name.set_text(self.game.name)
|
||||||
if self.game.developer:
|
if self.game.developer:
|
||||||
self.developer.set_text(self.game.developer)
|
self.developer.set_text(self.game.developer)
|
||||||
self.executable.set_text(" ".join(self.game.executable))
|
self.executable.set_text(
|
||||||
|
self.game.executable
|
||||||
|
if isinstance(self.game.executable, str)
|
||||||
|
else shlex.join(self.game.executable)
|
||||||
|
)
|
||||||
self.apply_button.set_label(_("Apply"))
|
self.apply_button.set_label(_("Apply"))
|
||||||
|
|
||||||
self.game_cover.new_cover(self.game.get_cover_path())
|
self.game_cover.new_cover(self.game.get_cover_path())
|
||||||
@@ -131,7 +136,6 @@ class DetailsWindow(Adw.Window):
|
|||||||
final_name = self.name.get_text()
|
final_name = self.name.get_text()
|
||||||
final_developer = self.developer.get_text()
|
final_developer = self.developer.get_text()
|
||||||
final_executable = self.executable.get_text()
|
final_executable = self.executable.get_text()
|
||||||
final_executable_split = final_executable.split()
|
|
||||||
|
|
||||||
if not self.game:
|
if not self.game:
|
||||||
if final_name == "":
|
if final_name == "":
|
||||||
@@ -183,7 +187,7 @@ class DetailsWindow(Adw.Window):
|
|||||||
|
|
||||||
self.game.name = final_name
|
self.game.name = final_name
|
||||||
self.game.developer = final_developer or None
|
self.game.developer = final_developer or None
|
||||||
self.game.executable = final_executable_split
|
self.game.executable = final_executable
|
||||||
|
|
||||||
if self.game.game_id in self.win.game_covers.keys():
|
if self.game.game_id in self.win.game_covers.keys():
|
||||||
self.win.game_covers[self.game.game_id].animation = None
|
self.win.game_covers[self.game.game_id].animation = None
|
||||||
|
|||||||
22
src/game.py
22
src/game.py
@@ -65,6 +65,7 @@ class Game(Gtk.Box):
|
|||||||
|
|
||||||
self.win = shared.win
|
self.win = shared.win
|
||||||
self.app = self.win.get_application()
|
self.app = self.win.get_application()
|
||||||
|
self.version = shared.spec_version
|
||||||
|
|
||||||
self.update_values(data)
|
self.update_values(data)
|
||||||
|
|
||||||
@@ -141,6 +142,7 @@ class Game(Gtk.Box):
|
|||||||
"developer",
|
"developer",
|
||||||
"removed",
|
"removed",
|
||||||
"blacklisted",
|
"blacklisted",
|
||||||
|
"version",
|
||||||
)
|
)
|
||||||
|
|
||||||
# TODO: remove for 2.0
|
# TODO: remove for 2.0
|
||||||
@@ -179,19 +181,17 @@ class Game(Gtk.Box):
|
|||||||
self.last_played = int(time())
|
self.last_played = int(time())
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
args = " ".join(
|
string = (
|
||||||
[
|
self.executable
|
||||||
"flatpak-spawn",
|
if isinstance(self.executable, str)
|
||||||
"--host",
|
else shlex.join(self.executable)
|
||||||
"/bin/sh",
|
|
||||||
"-c",
|
|
||||||
shlex.quote(" ".join(self.executable)),
|
|
||||||
]
|
|
||||||
if os.getenv("FLATPAK_ID") == "hu.kramo.Cartridges"
|
|
||||||
else self.executable
|
|
||||||
)
|
)
|
||||||
|
|
||||||
print(args)
|
args = (
|
||||||
|
"flatpak-spawn --host /bin/sh -c " + shlex.quote(string) # Flatpak
|
||||||
|
if os.getenv("FLATPAK_ID") == "hu.kramo.Cartridges"
|
||||||
|
else string # Others
|
||||||
|
)
|
||||||
|
|
||||||
subprocess.Popen(
|
subprocess.Popen(
|
||||||
args,
|
args,
|
||||||
|
|||||||
@@ -52,3 +52,4 @@ image_size = (200 * scale_factor, 300 * scale_factor)
|
|||||||
# pylint: disable=invalid-name
|
# pylint: disable=invalid-name
|
||||||
win = None
|
win = None
|
||||||
importer = None
|
importer = None
|
||||||
|
spec_version = 1.5 # The version of the game_id.json spec
|
||||||
|
|||||||
@@ -100,6 +100,9 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
games[data["game_id"]] = data
|
games[data["game_id"]] = data
|
||||||
|
|
||||||
for game_id, game in games.items():
|
for game_id, game in games.items():
|
||||||
|
if (version := game.get("version")) and version > shared.spec_version:
|
||||||
|
continue
|
||||||
|
|
||||||
if game.get("removed"):
|
if game.get("removed"):
|
||||||
for path in (
|
for path in (
|
||||||
shared.games_dir / f"{game_id}.json",
|
shared.games_dir / f"{game_id}.json",
|
||||||
|
|||||||
Reference in New Issue
Block a user