target_directories = ["landing", "checkout", "please_wait", "thank_you", "email", "report_abuse"]
form_enctype_pattern = re.compile(r'\{\{\s*form_enctype\(([^)]+)\)\s*\}\}')
templates_landing_pattern = re.compile(r'templates/landing/([^/]+)')
parser = argparse.ArgumentParser(description='Search directories and optionally replace content.')
parser.add_argument('--replace', action='store_true', help='Activate replace mode.')
return parser.parse_args()
def scan_file(file_path, replace=False):
with open(file_path, 'r+', encoding='utf-8') as file:
print(f"\nScanning file: {file_path}")
if '@AppUpgrade/Template' in line:
line = line.replace('@AppUpgrade/Template', 'page_template')
print(f"\nDry run: Would replace '@AppUpgrade/Template' with 'page_template' in line:")
print(f"Original: {original_line.strip()}")
print(f"Modified: {line.strip()}")
original_include = ":templates/"
new_include = "page_template_dynamic/"
if original_include in line:
line = line.replace(original_include, new_include)
print(f"\nDry run: Would replace '{original_include}' with '{new_include}' in line:")
print(f"Original: {original_line.strip()}")
print(f"Modified: {line.strip()}")
line, count = re.subn(r'(/[^:/]+):([^:/]+\.twig)', r'\1/\2', line)
if count > 0 and not replace:
print(f"\nDry run: Would replace path separators in line:")
print(f"Original: {original_line.strip()}")
print(f"Modified: {line.strip()}")
line, count = templates_landing_pattern.subn(r'page_template_dynamic/landing/\1', line)
print(f"\nDry run: Would replace 'templates/landing/{{current_folder}}' with 'page_template_dynamic/landing/{{current_folder}}' in line:")
print(f"Original: {original_line.strip()}")
print(f"Modified: {line.strip()}")
line, count = form_enctype_pattern.subn(r"", line)
print(f"\nDry run: Would replace 'form_enctype' with 'form_start' (with enctype) in line:")
print(f"Original: {original_line.strip()}")
print(f"Modified: {line.strip()}")
file.writelines(new_lines)
print(f"\nChanges written to {file_path}")
print(f"\nError processing file {file_path}: {str(e)}")
for root, dirs, files in os.walk("."):
if dir in target_directories:
print(f"\nFound {dir} in {root}")
for subdir, subdirs, subfiles in os.walk(os.path.join(root, dir)):
if file.endswith('.twig'):
file_path = os.path.join(subdir, file)
scan_file(file_path, replace=args.replace)
print(f"\nRun command with --replace to apply changes.")
if __name__ == "__main__":