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
|