[game-data-packager] 01/01: add support for www.gog.com & Origin
Alexandre Detiste
detiste-guest at moszumanska.debian.org
Sat Mar 14 13:01:44 UTC 2015
This is an automated email from the git hooks/post-receive script.
detiste-guest pushed a commit to branch master
in repository game-data-packager.
commit c8c4a115c243000f5d64098350d49b5327a9da58
Author: Alexandre Detiste <alexandre.detiste at gmail.com>
Date: Sat Mar 14 14:00:14 2015 +0100
add support for www.gog.com & Origin
move iter_fat_mounts() outside of GameData object,
re-use it for iter_origin_paths()
---
data/rott.yaml | 2 ++
data/syndicate.yaml | 2 ++
data/theme-hospital.yaml | 4 +++
game_data_packager/__init__.py | 56 ++++++++++++++++++++++++++++++++++--------
4 files changed, 54 insertions(+), 10 deletions(-)
diff --git a/data/rott.yaml b/data/rott.yaml
index 7e80a8f..6991701 100644
--- a/data/rott.yaml
+++ b/data/rott.yaml
@@ -35,6 +35,8 @@ packages:
longname: "Rise of the Triad: Dark War"
debian:
depends: rott-data
+ gog:
+ url: rise_of_the_triad__dark_war
install_to: usr/share/games/rott
install:
- any_registered_rtc
diff --git a/data/syndicate.yaml b/data/syndicate.yaml
index 7a76d0b..ca3292d 100644
--- a/data/syndicate.yaml
+++ b/data/syndicate.yaml
@@ -11,6 +11,8 @@ packages:
install_to: usr/share/games/freesynd/data
# this should be engine-agnostic:
# usr/share/games/syndicate
+ origin:
+ path: "Syndicate (1993)"
install:
- col01.dat
- game01.dat
diff --git a/data/theme-hospital.yaml b/data/theme-hospital.yaml
index 2b1a564..859b7e8 100644
--- a/data/theme-hospital.yaml
+++ b/data/theme-hospital.yaml
@@ -20,6 +20,10 @@ packages:
install_to: usr/share/games/theme-hospital
debian:
conflicts: theme-hospital-demo-data
+ gog:
+ url: theme_hospital
+ origin:
+ path: Theme Hospital
optional:
# documentation
- EN.pdf
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 489b940..e5946b7 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -353,6 +353,8 @@ class GameDataPackage(object):
# Steam ID and path
self.steam = {}
+ self.gog = {}
+ self.origin = {}
# overide the game engine when needed
self.engine = None
@@ -433,6 +435,8 @@ class GameDataPackage(object):
'optional': sorted(self.optional),
'rip_cd': self.rip_cd,
'steam': self.steam,
+ 'gog': self.gog,
+ 'origin': self.origin,
'symlinks': self.symlinks,
'type': self.type,
}
@@ -487,13 +491,15 @@ class GameData(object):
# Steam ID and path
self.steam = {}
+ self.gog = {}
+ self.origin = {}
self.data = data
self.argument_parser = None
for k in ('longname', 'copyright', 'compress_deb', 'help_text',
- 'steam','engine', 'genre'):
+ 'steam', 'gog', 'origin', 'engine', 'genre'):
if k in self.data:
setattr(self, k, self.data[k])
@@ -741,7 +747,7 @@ class GameData(object):
for k in ('expansion_for', 'longname', 'symlinks', 'install_to',
'install_to_docdir', 'install_contents_of', 'steam', 'debian',
'rip_cd', 'architecture', 'aliases', 'better_version',
- 'copyright', 'engine'):
+ 'copyright', 'engine', 'gog', 'origin'):
if k in d:
setattr(package, k, d[k])
@@ -1952,6 +1958,10 @@ class GameData(object):
if path not in paths:
paths.append(path)
+ for path in self.iter_origin_paths():
+ if path not in paths:
+ paths.append(path)
+
for arg in paths:
logger.debug('%s...', arg)
self.consider_file_or_dir(arg)
@@ -2268,13 +2278,6 @@ class GameData(object):
subprocess.call(['su', '-c', cmd])
- def iter_fat_mounts(self):
- with open('/proc/mounts', 'r', encoding='utf8') as mounts:
- for line in mounts.readlines():
- mount, type = line.split(' ')[1:3]
- if type in ('fat','vfat', 'ntfs'):
- yield os.path.join(mount, 'Program Files/Steam')
-
def iter_steam_paths(self, packages=None):
if packages is None:
packages = self.packages.values()
@@ -2291,7 +2294,7 @@ class GameData(object):
'wineprefixes/steam/drive_c/Program Files/Steam'),
os.path.expanduser('~/.wine/drive_c/Program Files/Steam'),
os.path.expanduser('~/.PlayOnLinux/wineprefix/Steam/drive_c/Program Files/Steam'),
- ) + tuple(self.iter_fat_mounts()):
+ ) + tuple(iter_fat_mounts('Steam')):
if not os.path.isdir(prefix):
continue
@@ -2306,6 +2309,32 @@ class GameData(object):
self.shortname, path)
yield path
+ def iter_origin_paths(self, packages=None):
+ if packages is None:
+ packages = self.packages.values()
+
+ suffixes = set(p.origin.get('path') for p in packages)
+ suffixes.add(self.origin.get('path'))
+ suffixes.discard(None)
+ if not suffixes:
+ return
+
+ for prefix in (
+ os.path.expanduser('~/.wine/drive_c/Program Files/Origin Games'),
+ ) + tuple(iter_fat_mounts('Origin Games')):
+ if not os.path.isdir(prefix):
+ continue
+
+ logger.debug('possible Origin root directory at %s', prefix)
+
+ for suffix in suffixes:
+ path = os.path.join(prefix, suffix)
+ if os.path.isdir(path):
+ logger.debug('possible %s found in Origin at %s',
+ self.shortname, path)
+ yield path
+
+
def construct_package(self, binary):
return GameDataPackage(binary)
@@ -2391,6 +2420,13 @@ class GameData(object):
'apt-get install %s',
' '.join(sorted(packages)))
+def iter_fat_mounts(folder):
+ with open('/proc/mounts', 'r', encoding='utf8') as mounts:
+ for line in mounts.readlines():
+ mount, type = line.split(' ')[1:3]
+ if type in ('fat','vfat', 'ntfs'):
+ yield os.path.join(mount, 'Program Files', folder)
+
def load_games(workdir=None):
games = {}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git
More information about the Pkg-games-commits
mailing list