13 def mergeFiles( fragFileNames, mergedFileName, commentChar, doMerge, ignoreMissing ):
15 startMark =
"%s --Beg " % commentChar
16 timeMark =
"%s --Date inserted: %s" % (commentChar, datetime.now())
17 endMark =
"%s --End " % commentChar
18 nameOffset = len(startMark)
20 basenames =
map(os.path.basename, fragFileNames)
22 isNewFile =
not os.path.exists(mergedFileName)
29 path_to_file = os.path.split(mergedFileName)[0]
30 if path_to_file
and not os.path.isdir(path_to_file):
32 os.makedirs(path_to_file)
33 open(mergedFileName,
'a')
35 mergedFile = open( mergedFileName,
'r+' )
43 for line
in mergedFile.readlines():
44 if line.startswith(startMark)
and line[nameOffset:].strip()
in basenames:
45 skipBlock = endMark + line[nameOffset:].strip()
47 while (len(newLines) > 0)
and (newLines[-1].strip() ==
''):
51 if line.startswith(skipBlock):
54 print "WARNING: missing end mark ('%s')" % skipBlock
57 for f
in fragFileNames:
58 if ignoreMissing
and not os.path.exists(f):
59 print "WARNING: '%s' does not exist, I'm ignoring it" % f
63 newLines.append(
'\n\n')
64 bf = os.path.basename(f)
65 newLines.append(startMark + bf +
'\n')
66 newLines.append(timeMark +
'\n')
67 fileData = open(f,
'r').read()
68 newLines.append(fileData)
69 if fileData
and fileData[-1] !=
'\n':
71 newLines.append(endMark + bf +
'\n')
74 mergedFile.truncate(0)
75 mergedFile.writelines(newLines)