[game-data-packager] 06/51: FileGroup: Optionally include contents in to_data()
Simon McVittie
smcv at debian.org
Fri Dec 29 01:23:34 UTC 2017
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 ecbaf3fec6410997dd8142e9ffded932720a2a37
Author: Simon McVittie <smcv at debian.org>
Date: Tue Dec 26 16:54:44 2017 +0000
FileGroup: Optionally include contents in to_data()
Signed-off-by: Simon McVittie <smcv at debian.org>
---
game_data_packager/__init__.py | 5 +++--
game_data_packager/data.py | 36 +++++++++++++++++++++++++++++++++++-
2 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/game_data_packager/__init__.py b/game_data_packager/__init__.py
index 59e6ca2..feae963 100644
--- a/game_data_packager/__init__.py
+++ b/game_data_packager/__init__.py
@@ -365,10 +365,11 @@ class GameData(object):
files[filename] = f.to_data(expand=expand)
for name, g in self.groups.items():
- groups[name] = g.to_data(expand=expand)
+ groups[name] = g.to_data(expand=expand, files=self.files)
for name, package in self.packages.items():
- packages[name] = package.to_data(expand=expand)
+ packages[name] = package.to_data(
+ expand=expand, files=self.files, groups=self.groups)
if files:
ret['files'] = files
diff --git a/game_data_packager/data.py b/game_data_packager/data.py
index 33e31b2..3128594 100644
--- a/game_data_packager/data.py
+++ b/game_data_packager/data.py
@@ -18,6 +18,7 @@
import hashlib
import io
+import yaml
from .version import (GAME_PACKAGE_VERSION)
@@ -387,6 +388,14 @@ class PackageRelation:
def __repr__(self):
return 'PackageRelation(' + repr(self.to_data()) + ')'
+class YamlLiteral(str):
+ @classmethod
+ def to_yaml(cls, dumper, data):
+ return dumper.represent_scalar(
+ 'tag:yaml.org,2002:str', data, style='|')
+
+yaml.add_representer(YamlLiteral, YamlLiteral.to_yaml)
+
class FileGroup:
__APPLY_TO_ALL = (
'doc', 'executable', 'install_to', 'license', 'unsuitable',
@@ -410,7 +419,7 @@ class FileGroup:
if value is not None:
setattr(other, attr, value)
- def to_data(self, expand=True):
+ def to_data(self, expand=True, files=None):
ret = {}
for attr in self.__APPLY_TO_ALL:
@@ -419,6 +428,31 @@ class FileGroup:
if value is not None:
ret[attr] = value
+ if self.group_members:
+ if files is None:
+ ret['group_members'] = sorted(self.group_members)
+ else:
+ group_members = []
+
+ for name in sorted(self.group_members):
+ if name in files:
+ f = files[name]
+ size = f.size
+ md5 = f.md5
+ else:
+ size = '_'
+ md5 = '_'
+
+ if size is None:
+ size = '_'
+
+ if md5 is None:
+ md5 = '_'
+
+ group_members.append('%-9s %s %s\n' % (size, md5, name))
+
+ ret['group_members'] = YamlLiteral(''.join(group_members))
+
return ret
class Package(object):
--
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