[game-data-packager] 03/14: to_yaml: turn sets into sorted lists, and output more fields

Simon McVittie smcv at debian.org
Mon Nov 2 00:49:17 UTC 2015


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 423613870b49577d059028904f880c68b3f72825
Author: Simon McVittie <smcv at debian.org>
Date:   Mon Nov 2 00:31:53 2015 +0000

    to_yaml: turn sets into sorted lists, and output more fields
---
 debian/changelog               |   1 +
 game_data_packager/__init__.py | 129 +++++++++++++++++++++++++++--------------
 2 files changed, 88 insertions(+), 42 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 6319df9..ff35637 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -16,6 +16,7 @@ game-data-packager (44) UNRELEASED; urgency=medium
   [ Simon McVittie ]
   * quake, quake2: make aliases consistently strings
   * Always build vfs.zip, and optionally use it even when uninstalled
+  * to_yaml: turn sets into sorted lists, and output more fields
 
  -- Simon McVittie <smcv at debian.org>  Sun, 01 Nov 2015 11:10:56 +0100
 
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 247e69c..609c959 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -95,23 +95,41 @@ class WantedFile(HashedFile):
         self._provides = set(value)
 
     def to_yaml(self):
-        return {
-            'alternatives': self.alternatives,
+        ret = {
             'distinctive_name': self.distinctive_name,
-            'distinctive_size': self.distinctive_size,
-            'download': self.download,
-            'executable': self.executable,
-            'install_as': self.install_as,
-            'install_to': self.install_to,
-            'license': self.license,
-            'look_for': list(self.look_for),
             'name': self.name,
-            'provides': list(self.provides),
             'size': self.size,
-            'skip_hash_matching': self.skip_hash_matching,
-            'unpack': self.unpack,
         }
 
+        for k in (
+                'alternatives',
+                'distinctive_size',
+                'executable',
+                'license',
+                'look_for',
+                'provides',
+                'skip_hash_matching',
+                ):
+            v = getattr(self, k)
+            if v:
+                if isinstance(v, set):
+                    ret[k] = sorted(v)
+                else:
+                    ret[k] = v
+
+        for k in (
+                'download',
+                'install_as',
+                'install_to',
+                'unsuitable',
+                'unpack',
+                ):
+            v = getattr(self, k)
+            if v is not None:
+                ret[k] = v
+
+        return ret
+
 class GameDataPackage(object):
     def __init__(self, name):
         # The name of the binary package
@@ -272,24 +290,56 @@ class GameDataPackage(object):
         self.langs = [value]
 
     def to_yaml(self):
-        return {
+        ret = {
             'architecture': self.architecture,
-            'demo_for': sorted(self.demo_for),
-            'better_version': self.better_version,
-            'expansion_for': self.expansion_for,
-            'install': sorted(self.install),
+            'component': self.component,
             'install_to': self.install_to,
-            'install_to_docdir': self.install_to_docdir,
             'name': self.name,
-            'optional': sorted(self.optional),
-            'rip_cd': self.rip_cd,
-            'steam': self.steam,
-            'gog': self.gog,
-            'origin': self.origin,
-            'symlinks': self.symlinks,
+            'section': self.section,
             'type': self.type,
+            'version': self.version,
         }
 
+        for k in (
+                'aliases',
+                'debian',
+                'demo_for',
+                'dotemu',
+                'gog',
+                'install',
+                'install_contents_of',
+                'install_to_docdir',
+                'optional',
+                'origin',
+                'rip_cd',
+                'steam',
+                'symlinks',
+                ):
+            v = getattr(self, k)
+            if v:
+                if isinstance(v, set):
+                    ret[k] = sorted(v)
+                else:
+                    ret[k] = v
+
+        for k in (
+                'better_version',
+                'copyright',
+                'description',
+                'disks',
+                'engine',
+                'expansion_for',
+                'expansion_for_ext',
+                'longname',
+                'url_misc',
+                'wiki',
+                ):
+            v = getattr(self, k)
+            if v is not None:
+                ret[k] = v
+
+        return ret
+
 class GameData(object):
     def __init__(self, shortname, data):
         # The name of the game for command-line purposes, e.g. quake3
@@ -555,35 +605,30 @@ class GameData(object):
 
     def to_yaml(self):
         files = {}
-        providers = {}
         packages = {}
-        known_filenames = {}
-        known_sizes = {}
+
+        def sort_set_values(d):
+            ret = {}
+            for k, v in d.items():
+                assert isinstance(v, set), (repr(k), repr(v))
+                ret[k] = sorted(v)
 
         for filename, f in self.files.items():
             files[filename] = f.to_yaml()
 
-        for provided, by in self.providers.items():
-            providers[provided] = list(by)
-
-        for size, known in self.known_sizes.items():
-            known_sizes[size] = list(known)
-
-        for filename, known in self.known_filenames.items():
-            known_filenames[filename] = list(known)
-
         for name, package in self.packages.items():
             packages[name] = package.to_yaml()
 
         return {
+            'copyright_notice': self.copyright_notice,
             'help_text': self.help_text,
-            'known_filenames': known_filenames,
-            'known_md5s': self.known_md5s,
-            'known_sha1s': self.known_sha1s,
-            'known_sha256s': self.known_sha256s,
-            'known_sizes': known_sizes,
+            'known_filenames': sort_set_values(self.known_filenames),
+            'known_md5s': sort_set_values(self.known_md5s),
+            'known_sha1s': sort_set_values(self.known_sha1s),
+            'known_sha256s': sort_set_values(self.known_sha256s),
+            'known_sizes': sort_set_values(self.known_sizes),
             'packages': packages,
-            'providers': providers,
+            'providers': sort_set_values(self.providers),
             'files': files,
         }
 

-- 
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