[game-data-packager] 04/19: Remove support for single-package-style YAML files

Simon McVittie smcv at debian.org
Tue Jan 13 11:34:37 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 d33ff430227a35c586a28be667f191b54a546eeb
Author: Simon McVittie <smcv at debian.org>
Date:   Tue Jan 13 09:08:01 2015 +0000

    Remove support for single-package-style YAML files
    
    It's unnecessarily confusing having more than one way to do it;
    only support the explicit "packages" section.
---
 data/enemy-territory-data.wip      |  4 +++-
 lib/game_data_packager/__init__.py | 43 +++++++++++++++++---------------------
 2 files changed, 22 insertions(+), 25 deletions(-)

diff --git a/data/enemy-territory-data.wip b/data/enemy-territory-data.wip
index 837aef2..61b678d 100644
--- a/data/enemy-territory-data.wip
+++ b/data/enemy-territory-data.wip
@@ -1,6 +1,8 @@
 %YAML 1.2
 ---
-package: enemy-territory-data
+packages:
+  enemy-territory-data:
+    install: []
 
 # This file is unfinished.
 
diff --git a/lib/game_data_packager/__init__.py b/lib/game_data_packager/__init__.py
index 8d0d856..6667e20 100644
--- a/lib/game_data_packager/__init__.py
+++ b/lib/game_data_packager/__init__.py
@@ -362,18 +362,11 @@ class GameData(object):
             else:
                 raise AssertionError('try_repack_from should be str or list')
 
-        if 'package' in self.yaml:
-            package = self.construct_package(self.yaml['package'])
-            self.packages[self.yaml['package']] = package
-            assert 'packages' not in self.yaml
-        else:
-            assert self.yaml['packages']
-            assert 'install_files' not in self.yaml
-
-            # these do not make sense at top level if there is more than
-            # one package
-            assert 'symlinks' not in self.yaml
-            assert 'install_files_from_cksums' not in self.yaml
+        # these should be per-package
+        assert 'install_files' not in self.yaml
+        assert 'package' not in self.yaml
+        assert 'symlinks' not in self.yaml
+        assert 'install_files_from_cksums' not in self.yaml
 
         # Map from WantedFile name to instance.
         # { 'baseq3/pak1.pk3': WantedFile instance }
@@ -410,7 +403,6 @@ class GameData(object):
         self.download_failed = set()
 
         self._populate_files(self.yaml.get('files'))
-        self._populate_files(self.yaml.get('install_files'), install=True)
 
         if 'package' in self.yaml:
             self._populate_package(next(iter(self.packages.values())),
@@ -419,6 +411,7 @@ class GameData(object):
         if 'packages' in self.yaml:
             for binary, data in self.yaml['packages'].items():
                 # these should only be at top level, since they are global
+                assert 'cksums' not in data, binary
                 assert 'md5sums' not in data, binary
                 assert 'sha1sums' not in data, binary
                 assert 'sha256sums' not in data, binary
@@ -427,6 +420,16 @@ class GameData(object):
                 self.packages[binary] = package
                 self._populate_package(package, data)
 
+        if 'cksums' in self.yaml:
+            for line in self.yaml['cksums'].splitlines():
+                stripped = line.strip()
+                if stripped == '' or stripped.startswith('#'):
+                    continue
+
+                _, size, filename = line.split(None, 2)
+                f = self._ensure_file(filename)
+                f.size = int(size)
+
         for alg in ('md5', 'sha1', 'sha256'):
             if alg + 'sums' in self.yaml:
                 for line in self.yaml[alg + 'sums'].splitlines():
@@ -590,23 +593,15 @@ class GameData(object):
                 f.size = int(size)
                 package.install.add(filename)
 
-        self._populate_files(d.get('install_files'), install=True,
-                install_package=package)
+        self._populate_files(d.get('install_files'), install_package=package)
 
-    def _populate_files(self, d, install=False, install_package=None,
+    def _populate_files(self, d, install_package=None,
             **kwargs):
         if d is None:
             return
 
-        if install and install_package is None:
-            assert len(self.packages) == 1
-            install_package = next(iter(self.packages.values()))
-
         for filename, data in d.items():
-            if data.get('install', install):
-                if install_package is None:
-                    assert len(self.packages) == 1
-                    install_package = next(iter(self.packages.values()))
+            if install_package is not None:
                 install_package.install.add(filename)
 
             f = self._ensure_file(filename)

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