[game-data-packager] 01/02: Plugins: move package-specific quirks into Package subclasses
Simon McVittie
smcv at debian.org
Fri Nov 4 00:46:43 UTC 2016
This is an automated email from the git hooks/post-receive script.
smcv pushed a commit to branch master
in repository game-data-packager.
commit eb031dc5dce6003a697f2ddacef32f384ea5a29d
Author: Simon McVittie <smcv at debian.org>
Date: Thu Nov 3 11:56:47 2016 +0000
Plugins: move package-specific quirks into Package subclasses
---
game_data_packager/games/doom_common.py | 46 +++++++++++++++++++++----------
game_data_packager/games/dosbox.py | 38 +++++++++++++++----------
game_data_packager/games/ecwolf_common.py | 17 ++++++++----
game_data_packager/games/z_code.py | 23 +++++++++++-----
4 files changed, 84 insertions(+), 40 deletions(-)
diff --git a/game_data_packager/games/doom_common.py b/game_data_packager/games/doom_common.py
index 139240b..cc2b33d 100644
--- a/game_data_packager/games/doom_common.py
+++ b/game_data_packager/games/doom_common.py
@@ -23,6 +23,7 @@ import subprocess
from .. import GameData
from ..build import (PackagingTask)
+from ..data import (Package)
from ..paths import DATADIR
from ..util import (copy_with_substitutions, mkdir_p)
@@ -72,26 +73,43 @@ class DoomGameData(GameData):
self.genre = 'First-person shooter'
for package in self.packages.values():
- package.install_to = '$assets/doom'
-
- if 'main_wads' in self.data['packages'][package.name]:
- package.main_wads = self.data['packages'][package.name]['main_wads']
- else:
- assert package.only_file
- package.main_wads = {package.only_file: {}}
- assert type(package.main_wads) == dict
for main_wad in package.main_wads.values():
- assert type(main_wad) == dict
- if 'args' in main_wad:
- main_wad['args'] % 'deadbeef'
- elif package.expansion_for:
+ if 'args' not in main_wad and package.expansion_for:
assert self.packages[package.expansion_for].only_file
- package.data_type = 'PWAD' if (package.expansion_for
- or package.expansion_for_ext) else 'IWAD'
+
+ def construct_package(self, binary, data):
+ return DoomPackage(binary, data)
def construct_task(self, **kwargs):
return DoomTask(self, **kwargs)
+class DoomPackage(Package):
+ def __init__(self, binary, data):
+ super(DoomPackage, self).__init__(binary, data)
+
+ assert 'install_to' not in data, self.name
+ assert 'data_type' not in data, self.name
+
+ self.install_to = '$assets/doom'
+
+ if self.expansion_for or self.expansion_for_ext:
+ self.data_type = 'PWAD'
+ else:
+ self.data_type = 'IWAD'
+
+ if 'main_wads' in data:
+ self.main_wads = data['main_wads']
+ else:
+ assert self.only_file
+ self.main_wads = { self.only_file: {} }
+
+ assert type(self.main_wads) == dict
+ for main_wad in self.main_wads.values():
+ assert type(main_wad) == dict
+ if 'args' in main_wad:
+ # assert that it has one string placeholder
+ main_wad['args'] % 'deadbeef'
+
class DoomTask(PackagingTask):
def fill_extra_files(self, package, destdir):
super(DoomTask, self).fill_extra_files(package, destdir)
diff --git a/game_data_packager/games/dosbox.py b/game_data_packager/games/dosbox.py
index 401165a..b781004 100755
--- a/game_data_packager/games/dosbox.py
+++ b/game_data_packager/games/dosbox.py
@@ -24,6 +24,7 @@ import os
from .. import GameData
from ..build import (PackagingTask)
+from ..data import (Package)
from ..util import (mkdir_p)
logger = logging.getLogger(__name__)
@@ -39,24 +40,33 @@ class DosboxGameData(GameData):
super(DosboxGameData, self).__init__(shortname, data)
self.binary_executables = 'all'
- for p in self.packages.values():
- p.install_to = '$assets/dosbox/' + p.name[:len(p.name)-5]
- p.depends = 'dosgame'
- p.main_exe = None
- if 'main_exe' in self.data['packages'][p.name]:
- p.main_exe = self.data['packages'][p.name]['main_exe']
- else:
- for wanted in p.install:
- filename, ext = os.path.splitext(wanted)
- if (filename not in ('config', 'install', 'setup')
- and ext in ('.com','.exe')):
- assert p.main_exe is None
- p.main_exe = filename
- assert p.main_exe
+ def construct_package(self, binary, data):
+ return DosboxPackage(binary, data)
def construct_task(self, **kwargs):
return DosboxTask(self, **kwargs)
+class DosboxPackage(Package):
+ def __init__(self, binary, data):
+ super(DosboxPackage, self).__init__(binary, data)
+
+ assert 'install_to' not in data
+ assert 'depends' not in data
+
+ self.install_to = '$assets/dosbox/' + self.name[:len(self.name)-5]
+ self.depends = 'dosgame'
+ self.main_exe = None
+ if 'main_exe' in data:
+ self.main_exe = data['main_exe']
+ else:
+ for wanted in self.install:
+ filename, ext = os.path.splitext(wanted)
+ if (filename not in ('config', 'install', 'setup')
+ and ext in ('.com','.exe')):
+ assert self.main_exe is None
+ self.main_exe = filename
+ assert self.main_exe
+
class DosboxTask(PackagingTask):
def fill_extra_files(self, package, destdir):
super(DosboxTask, self).fill_extra_files(package, destdir)
diff --git a/game_data_packager/games/ecwolf_common.py b/game_data_packager/games/ecwolf_common.py
index d28f52c..ff7b3a8 100644
--- a/game_data_packager/games/ecwolf_common.py
+++ b/game_data_packager/games/ecwolf_common.py
@@ -23,6 +23,7 @@ import subprocess
from .. import GameData
from ..build import (PackagingTask)
+from ..data import (Package)
from ..paths import DATADIR
from ..util import (mkdir_p)
@@ -46,15 +47,21 @@ class EcwolfGameData(GameData):
if self.genre is None:
self.genre = 'First-person shooter'
- for package in self.packages.values():
- if 'quirks' in self.data['packages'][package.name]:
- package.quirks = ' ' + self.data['packages'][package.name]['quirks']
- else:
- package.quirks = ''
+ def construct_package(self, binary, data):
+ return EcwolfPackage(binary, data)
def construct_task(self, **kwargs):
return EcwolfTask(self, **kwargs)
+class EcwolfPackage(Package):
+ def __init__(self, binary, data):
+ super(EcwolfPackage, self).__init__(binary, data)
+
+ if 'quirks' in data:
+ self.quirks = ' ' + data['quirks']
+ else:
+ self.quirks = ''
+
class EcwolfTask(PackagingTask):
def fill_extra_files(self, package, destdir):
super(EcwolfTask, self).fill_extra_files(package, destdir)
diff --git a/game_data_packager/games/z_code.py b/game_data_packager/games/z_code.py
index 78f324c..0f4e878 100644
--- a/game_data_packager/games/z_code.py
+++ b/game_data_packager/games/z_code.py
@@ -24,6 +24,7 @@ import re
from .. import GameData
from ..build import (PackagingTask)
+from ..data import (Package)
from ..util import (TemporaryUmask,
which,
mkdir_p)
@@ -33,13 +34,6 @@ logger = logging.getLogger(__name__)
class ZCodeGameData(GameData):
def __init__(self, shortname, data):
super(ZCodeGameData, self).__init__(shortname, data)
- for package in self.packages.values():
- package.z_file = None
- for install in package.install:
- if re.match('^.z[12345678]$', os.path.splitext(install)[1]):
- assert package.z_file is None
- package.z_file = install
- assert package.z_file
if self.engine is None:
self.engine = { 'deb': 'gargoyle-free | zcode-interpreter' }
@@ -47,9 +41,24 @@ class ZCodeGameData(GameData):
if self.genre is None:
self.genre = 'Adventure'
+ def construct_package(self, binary, data):
+ return ZCodePackage(binary, data)
+
def construct_task(self, **kwargs):
return ZCodeTask(self, **kwargs)
+class ZCodePackage(Package):
+ def __init__(self, binary, data):
+ super(ZCodePackage, self).__init__(binary, data)
+
+ self.z_file = None
+ for install in self.install:
+ if re.match('^.z[12345678]$', os.path.splitext(install)[1]):
+ assert self.z_file is None
+ self.z_file = install
+
+ assert self.z_file
+
class ZCodeTask(PackagingTask):
def fill_extra_files(self, package, destdir):
super(ZCodeTask, self).fill_extra_files(package, destdir)
--
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