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 ba7a5750b2312444e3fd429cbb8769b666aa8f16 Author: Simon McVittie <[email protected]> Date: Thu Jan 22 11:09:22 2015 +0000 Add the ability for games to have aliases --- data/final-doom.yaml | 3 +++ data/ja.yaml | 1 + data/quake.yaml | 5 +++++ data/quake2.yaml | 6 ++++++ data/spear-of-destiny.yaml | 1 + lib/game_data_packager/__init__.py | 34 ++++++++++++++++++++++++++++++++-- 6 files changed, 48 insertions(+), 2 deletions(-) diff --git a/data/final-doom.yaml b/data/final-doom.yaml index 0f66c9f..e5de59b 100644 --- a/data/final-doom.yaml +++ b/data/final-doom.yaml @@ -5,6 +5,7 @@ # http://doomwiki.org/wiki/PLUTONIA.WAD shortname: final-doom longname: Final Doom +aliases: [tnt, plutonia] plugin: doom_common @@ -16,6 +17,7 @@ packages: # these are IWADs so technically they behave like full games: # you don't need Doom or Doom II to play them longname: "Final Doom: TNT: Evilution" + aliases: [tnt, t] debian: engine: "chocolate-doom | doom-engine" provides: doom-wad @@ -26,6 +28,7 @@ packages: plutonia-wad: longname: "Final Doom: The Plutonia Experiment" + aliases: [plutonia, p] debian: engine: "chocolate-doom | doom-engine" provides: doom-wad diff --git a/data/ja.yaml b/data/ja.yaml index 6819f6e..03375f9 100644 --- a/data/ja.yaml +++ b/data/ja.yaml @@ -45,6 +45,7 @@ packages: 3247293709 9282026 base/assets3.pk3 jedi-academy-bonus-data: + aliases: [bonus] longname: "Bonus maps for Jedi Academy" expansion_for: jedi-academy-data install_files_from_cksums: | diff --git a/data/quake.yaml b/data/quake.yaml index f983265..0a684ec 100644 --- a/data/quake.yaml +++ b/data/quake.yaml @@ -53,6 +53,7 @@ packages: install_to: usr/share/games/quake quake-armagon: + aliases: [armagon, hipnotic, mp1, 1] expansion_for: quake-registered longname: "Quake Mission Pack 1: Scourge of Armagon" steam: @@ -67,6 +68,7 @@ packages: install_to: usr/share/games/quake quake-dissolution: + aliases: [dissolution, eternity, rogue, mp2, 2] expansion_for: quake-registered longname: "Quake Mission Pack 2: Dissolution of Eternity" steam: @@ -83,6 +85,7 @@ packages: install_to: usr/share/games/quake quake-music: + aliases: [music] expansion_for: quake-registered install_to: usr/share/games/quake rip_cd: @@ -91,6 +94,7 @@ packages: first_track: 2 quake-armagon-music: + aliases: [mp1-music] expansion_for: quake-armagon install_to: usr/share/games/quake rip_cd: @@ -99,6 +103,7 @@ packages: first_track: 2 quake-dissolution-music: + aliases: [mp2-music] expansion_for: quake-dissolution install_to: usr/share/games/quake rip_cd: diff --git a/data/quake2.yaml b/data/quake2.yaml index 3304719..13f69eb 100644 --- a/data/quake2.yaml +++ b/data/quake2.yaml @@ -1,6 +1,7 @@ %YAML 1.2 --- longname: Quake II +aliases: [q2rogue, q2xatrix] help_text: | For quake2-full-data, you must provide baseq2/pak0.pak and the baseq2/video @@ -323,6 +324,7 @@ packages: - release.txt_3.14_demo quake2-music: + aliases: [music] expansion_for: quake2-full-data # http://musicbrainz.org/release/06727a29-435d-423e-90a8-1a4fed5edb54 install_to: usr/share/games/quake2 @@ -332,6 +334,7 @@ packages: first_track: 2 quake2-reckoning-data: + aliases: [xatrix, q2xatrix, reckoning, mp1, 1] symlinks: usr/share/games/quake2/quake2-reckoning: usr/games/quake2 longname: "Quake II Mission Pack 1: The Reckoning" @@ -371,6 +374,7 @@ packages: - xatrix/docs/release.txt quake2-reckoning-music: + aliases: [mp1music] expansion_for: quake2-reckoning-data # http://musicbrainz.org/release/a1eb0af4-6348-4aa6-a586-4f41a33c5dea install_to: usr/share/games/quake2 @@ -382,6 +386,7 @@ packages: quake2-groundzero-data: symlinks: usr/share/games/quake2/quake2-groundzero: usr/games/quake2 + aliases: [rogue, q2rogue, groundzero, mp2, 2] longname: "Quake II Mission Pack 2: Ground Zero" steam: id: 2340 @@ -417,6 +422,7 @@ packages: quake2-groundzero-music: expansion_for: quake2-groundzero-data + aliases: [mp2music] # http://musicbrainz.org/release/7590e38c-f203-425a-b726-37a55b6d2937 install_to: usr/share/games/quake2 rip_cd: diff --git a/data/spear-of-destiny.yaml b/data/spear-of-destiny.yaml index c542fe7..51223cf 100644 --- a/data/spear-of-destiny.yaml +++ b/data/spear-of-destiny.yaml @@ -1,6 +1,7 @@ %YAML 1.2 --- shortname: spear-of-destiny +aliases: [spear] longname: "Spear of Destiny (Wolfenstein 3D prequel)" steam: diff --git a/lib/game_data_packager/__init__.py b/lib/game_data_packager/__init__.py index d2d318f..014d10e 100644 --- a/lib/game_data_packager/__init__.py +++ b/lib/game_data_packager/__init__.py @@ -314,6 +314,9 @@ class GameDataPackage(object): # The name of the binary package self.name = name + # Other names for this binary package + self._aliases = set() + # Names of relative packages self.demo_for = set() self.expansion_for = None @@ -362,6 +365,13 @@ class GameDataPackage(object): self.architecture = 'all' @property + def aliases(self): + return self._aliases + @aliases.setter + def aliases(self, value): + self._aliases = set(value) + + @property def install(self): return self._install @install.setter @@ -420,6 +430,9 @@ class GameData(object): # The name of the game for command-line purposes, e.g. quake3 self.shortname = shortname + # Other command-line names for this game + self.aliases = set() + # The formal name of the game, e.g. Quake III Arena self.longname = shortname.title() @@ -453,6 +466,9 @@ class GameData(object): if 'longname' in self.yaml: self.longname = self.yaml['longname'] + if 'aliases' in self.yaml: + self.aliases = set(self.yaml['aliases']) + if 'try_repack_from' in self.yaml: paths = self.yaml['try_repack_from'] if isinstance(paths, list): @@ -693,7 +709,7 @@ class GameData(object): def _populate_package(self, package, d): for k in ('expansion_for', 'longname', 'symlinks', 'install_to', 'install_to_docdir', 'install_contents_of', 'steam', 'debian', - 'rip_cd', 'architecture'): + 'rip_cd', 'architecture', 'aliases'): if k in d: setattr(package, k, d[k]) @@ -1732,8 +1748,15 @@ class GameData(object): return os.path.join(DATADIR, package.name + '.control.in') def add_parser(self, parsers, base_parser, **kwargs): + aliases = self.aliases + + for package in self.packages.values(): + aliases.add(package.name) + # do not add all the package's aliases: they can be things + # that collide with other games, like mp1 + parser = parsers.add_parser(self.shortname, - help=self.longname, aliases=self.packages.keys(), + help=self.longname, aliases=aliases, description=self.help_text, formatter_class=argparse.RawDescriptionHelpFormatter, parents=(base_parser,), @@ -1799,6 +1822,11 @@ class GameData(object): self.save_downloads = args.save_downloads + for package in self.packages.values(): + if args.shortname in package.aliases: + args.shortname = package.name + break + if args.shortname in self.packages: if args.packages and args.packages != [args.shortname]: not_the_one = [p for p in args.packages if p != args.shortname] @@ -2306,6 +2334,8 @@ def run_command_line(): for game in games.values(): if parsed.shortname in game.packages: break + if parsed.shortname in game.aliases: + break else: raise AssertionError('could not find %s' % parsed.shortname) -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

