in ccmlib/common.py [0:0]
def replaces_or_add_into_file_tail(file, replacement_list, add_config_close=True):
rs = [(re.compile(regexp), repl) for (regexp, repl) in replacement_list]
is_line_found = False
file_tmp = file + "." + str(os.getpid()) + ".tmp"
with open(file, 'r') as f:
with open(file_tmp, 'w') as f_tmp:
for line in f:
for r, replace in rs:
match = r.search(line)
if match:
line = replace + "\n"
is_line_found = True
if "</configuration>" not in line:
f_tmp.write(line)
# In case, entry is not found, and need to be added
if not is_line_found:
f_tmp.write('\n' + replace + "\n")
# We are moving the closing tag to the end of the file.
# Previously, we were having an issue where new lines we wrote
# were appearing after the closing tag, and thus being ignored.
if add_config_close:
f_tmp.write("</configuration>\n")
shutil.move(file_tmp, file)