Check if a game is instaled by installer slug instead of yaml filename

This commit is contained in:
Mathieu Comandon 2014-01-25 17:23:21 +01:00
parent ce3e8d257e
commit f061226f3c
2 changed files with 11 additions and 7 deletions

View file

@ -49,7 +49,7 @@ from lutris.util.log import logger
from lutris.installer import InstallerDialog
from lutris.config import check_config # , register_handler
from lutris.game import Game
from lutris.pga import get_games
from lutris import pga
from lutris.gui.lutriswindow import LutrisWindow
from lutris.settings import VERSION
@ -84,7 +84,7 @@ if options.debug:
logger.setLevel(logging.DEBUG)
if options.list_games:
for game in get_games():
for game in pga.get_games():
print u"{:<40} | {:<40} | {:<15} | {:<64}".format(
game['name'][:40],
game['slug'][:40],
@ -115,9 +115,11 @@ for arg in args:
if game_slug or options.installer_file:
file_path = os.path.join(GAME_CONFIG_PATH, game_slug + CONFIG_EXTENSION)
if os.path.exists(file_path) and not options.reinstall:
logger.info("Launching %s", game_slug)
lutris_game = Game(game_slug)
db_game = pga.get_game_by_slug(game_slug) \
or pga.get_game_by_slug(game_slug, field='installer_slug')
if db_game and db_game['installed'] and not options.reinstall:
logger.info("Launching %s", db_game['name'])
lutris_game = Game(db_game['slug'])
lutris_game.play()
else:
logger.info("Installing %s", game_slug)

View file

@ -142,8 +142,10 @@ def get_games(name_filter=None, filter_installed=False):
return game_list
def get_game_by_slug(slug):
game_result = sql.db_select(PGA_DB, "games", condition=('slug', slug))
def get_game_by_slug(slug, field='slug'):
if field not in ('slug', 'installer_slug'):
raise ValueError("Invalid field name: %s", field)
game_result = sql.db_select(PGA_DB, "games", condition=(field, slug))
if game_result:
return game_result[0]
return {}