14 stringRes =
'!' + prefix +
'\n'
17 stringRes =
'^'+prefix+
'*\n'
18 elif self.
mode ==
'*':
19 stringRes = prefix +
'/*\n'
20 elif self.
mode ==
'/':
23 stringRes =
'^' + prefix +
'\n'
24 for key, val
in self.children.items():
25 stringRes+=val.getString(prefix+
'/'+key, self.
mode ==
'*')
38 with open(self.
infiles[0],
'r') as specFile0:
39 for curLine
in specFile0:
40 (curLine, mode) = self.
get_info(curLine)
41 path_parts = curLine.split(
'/')
42 curNode = self.
add_node(path_parts, mode)
44 for curfile
in self.
infiles[1:]:
45 with open(curfile,
'r') as curSpecFile:
46 for curLine
in curSpecFile:
47 (curLine, mode) = self.
get_info(curLine)
48 path_parts = curLine.split(
'/')
50 curNode = self.
add_node(path_parts, mode)
54 passthrough =
'-' if mode==
'!' else '_'
57 for part
in path_parts:
59 if not part
in curNode.children\
60 and curDepth > self.
depth\
62 print(
"Found mergeable")
65 elif not part
in curNode.children:
67 curNode.children[part] =
TreeNode(passthrough)
68 curNode = curNode.children[part]
71 with open(self.
outfile,
"w")
as specFile:
72 specFile.write(str(self.
root))
76 passthrough =
'-' if mode==
'!' else '_'
77 for part
in path_parts:
78 if not part
in curNode.children:
79 curNode.children[part] =
TreeNode(passthrough)
80 curNode = curNode.children[part]
93 if old ==
'/' and update
in [
'^',
'*']:
95 if old ==
'^' and update ==
'*':
100 curLine = curLine.strip()
103 if (curLine[-1] ==
'*'):
105 curLine = curLine[:-1]
109 curLine = curLine[1:]
111 if not wildcard
and mode==
'^':
113 curLine = curLine[2:]
114 return (curLine, mode)
122 argparser = argparse.ArgumentParser()
124 argparser.add_argument(
"depth",
126 help=
"The trace log file")
128 argparser.add_argument(
"infiles",
131 help=
"The trace log file")
133 argparser.add_argument(
"outfile",
135 help=
"The output file")
137 return argparser.parse_args()
142 diffBuilder.build_diff()
144 if __name__ ==
"__main__":