aboutsummaryrefslogtreecommitdiff
path: root/license_protected_downloads/splice_build_infos.py
blob: f960247f89ba096ffdf85487871f31f9a6a88a61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import os

from buildinfo import BuildInfo

IGNORED_FILES = ["BUILD-INFO.txt", "EULA.txt", "OPEN-EULA.txt"]


class SpliceBuildInfos:

    def __init__(self, build_info_paths):
        """Initiates a splice build info object.

        :param build_info_paths: list of dir paths containing
        the BUILD-INFO.txt files.
        """
        self.build_infos = []
        for build_info_path in build_info_paths:
            for path, subdirs, files in os.walk(build_info_path):
                for filename in files:
                    if path == build_info_path:
                        if filename not in IGNORED_FILES:
                            build_info = BuildInfo(os.path.join(path,
                                                                filename))
                            if len(build_info.file_info_array[0]):
                                self.build_infos.append(build_info)

    def splice(self, build_info_path):

        build_info_res = {}
        for build_info in self.build_infos:
            build_info_res[build_info.fname] = build_info.file_info_array

        build_info_res = self.merge_duplicates(build_info_res)
        BuildInfo.write_from_array([build_info_res], build_info_path)

    @classmethod
    def merge_duplicates(cls, build_info_dict):
        build_info_res = {}
        for key in build_info_dict:
            if build_info_dict[key] in build_info_res.values():
                found_key = [name for name, value in
                             build_info_res.iteritems()
                             if value == build_info_dict[key]][0]
                if key != found_key:
                    new_key = "%s, %s" % (found_key, key)
                    build_info_res[new_key] = build_info_dict[key]
                    del build_info_res[found_key]
            else:
                build_info_res[key] = build_info_dict[key]

        return build_info_res