#!/usr/bin/env python3 import os import re from pathlib import Path # Base directory base_dir = Path("/Users/velikho/Desktop/WORKING/Base/services/iam-service/src") # Find all files that use getErrorMessage for root, dirs, files in os.walk(base_dir): # Skip test directories if '__tests__' in root or 'node_modules' in root: continue for file in files: if not (file.endswith('.controller.ts') or file.endswith('.middleware.ts') or file.endswith('.service.ts')): continue if file.endswith('.test.ts') or file.endswith('.e2e.ts'): continue filepath = Path(root) / file # Read file content with open(filepath, 'r', encoding='utf-8') as f: content = f.read() # Check if file uses getErrorMessage if 'getErrorMessage(' not in content: continue # Check if import already exists if re.search(r'import.*getErrorMessage.*from.*error-utils', content): continue # Calculate relative path rel_path = filepath.relative_to(base_dir) depth = len(rel_path.parts) - 1 # -1 for the file itself # Build relative import path if depth == 1: # src/middlewares/ import_path = '../utils/error-utils' elif depth == 2: # src/modules/xxx/ import_path = '../../utils/error-utils' elif depth == 3: # src/modules/xxx/yyy/ import_path = '../../../utils/error-utils' else: import_path = '../../utils/error-utils' # default # Find the last import line lines = content.split('\n') last_import_idx = -1 for i, line in enumerate(lines): if line.strip().startswith('import '): last_import_idx = i if last_import_idx >= 0: # Insert new import after last import import_statement = f"import {{ getErrorMessage }} from '{import_path}';" lines.insert(last_import_idx + 1, import_statement) # Write back with open(filepath, 'w', encoding='utf-8') as f: f.write('\n'.join(lines)) print(f"Added import to {filepath}") print("Done!")