def get_lutris_action(self, url): installer_info = {'game_slug': None, 'revision': None, 'action': None} if url: url = url.get_strv() if url and len(url): url = url[0] # TODO: Support multiple installer_info = parse_installer_url(url) if installer_info is False: raise ValueError return installer_info
def get_lutris_action(url): installer_info = {"game_slug": None, "revision": None, "action": None} if url: url = url.get_strv() if url: url = url[0] # TODO: Support multiple installer_info = parse_installer_url(url) if installer_info is False: raise ValueError return installer_info
def get_lutris_action(self, url): installer_info = { 'game_slug': None, 'revision': None, 'action': None } if url: url = url.get_strv() if url and len(url): url = url[0] # TODO: Support multiple installer_info = parse_installer_url(url) if installer_info is False: raise ValueError return installer_info
def do_command_line(self, command_line): options = command_line.get_options_dict() if options.contains('debug'): logger.setLevel(logging.DEBUG) if options.contains('list-games'): game_list = pga.get_games() if options.contains('installed'): game_list = [game for game in game_list if game['installed']] if options.contains('json'): self.print_game_json(command_line, game_list) else: self.print_game_list(command_line, game_list) return 0 elif options.contains('list-steam-games'): self.print_steam_list(command_line) return 0 elif options.contains('list-steam-folders'): self.print_steam_folders(command_line) return 0 elif options.contains('exec'): command = options.lookup_value('exec').get_string() self.execute_command(command) return 0 game_slug = '' revision = None uri = options.lookup_value(GLib.OPTION_REMAINING) if uri: uri = uri.get_strv() if uri and len(uri): uri = uri[0] # TODO: Support multiple installer_info = parse_installer_url(uri) if installer_info is False: self._print(command_line, '%s is not a valid URI' % uri) return 1 game_slug = installer_info['game_slug'] revision = installer_info['revision'] if game_slug or options.contains('install'): installer_file = None if options.contains('install'): installer_file = options.lookup_value('install').get_string() if not os.path.isfile(installer_file): self._print(command_line, "No such file: %s" % installer_file) return 1 db_game = None if game_slug: db_game = (pga.get_game_by_field(game_slug, 'id') or pga.get_game_by_field(game_slug, 'slug') or pga.get_game_by_field(game_slug, 'installer_slug')) force_install = options.contains('reinstall') or bool(installer_info.get('revision')) if db_game and db_game['installed'] and not force_install: self._print(command_line, "Launching %s" % db_game['name']) if self.window: self.run_game(db_game['id']) else: lutris_game = Game(db_game['id']) # FIXME: This is awful lutris_game.exit_main_loop = True lutris_game.play() try: GLib.MainLoop().run() except KeyboardInterrupt: lutris_game.stop() else: self._print(command_line, "Installing %s" % game_slug or installer_file) if self.window: self.window.on_install_clicked(game_slug=game_slug, installer_file=installer_file, revision=revision) else: runtime_updater = RuntimeUpdater() runtime_updater.update() # FIXME: This should be a Gtk.Dialog child of LutrisWindow dialog = InstallerDialog(game_slug=game_slug, installer_file=installer_file, revision=revision) self.add_window(dialog) return 0 self.activate() return 0
def test_legacy_url(self): result = parse_installer_url("lutris:quake") self.assertEqual(result['game_slug'], 'quake') self.assertEqual(result['revision'], None) self.assertEqual(result['action'], None)
def test_action_rungame(self): result = parse_installer_url("lutris:rungame/quake") self.assertEqual(result['game_slug'], 'quake') self.assertEqual(result['revision'], None) self.assertEqual(result['action'], 'rungame')
def test_action_rungameid(self): result = parse_installer_url("lutris:rungameid/123") self.assertEqual(result['game_slug'], '123') self.assertEqual(result['revision'], None) self.assertEqual(result['action'], 'rungameid')