aboutsummaryrefslogtreecommitdiffstats
path: root/sortImports.py
diff options
context:
space:
mode:
Diffstat (limited to 'sortImports.py')
-rw-r--r--sortImports.py87
1 files changed, 87 insertions, 0 deletions
diff --git a/sortImports.py b/sortImports.py
new file mode 100644
index 0000000000..6f3fb64775
--- /dev/null
+++ b/sortImports.py
@@ -0,0 +1,87 @@
+import os
+
+def sort_imports(java_file_path):
+ with open(java_file_path, 'r', encoding='utf-8') as file:
+ lines = file.readlines()
+
+ # Separate license block
+ license_block = []
+ package_line = None
+ static_imports = []
+ normal_imports = []
+ other_lines = []
+
+ i = 0
+
+ # Process license block
+ if lines and lines[0].startswith('/**'):
+ for i, line in enumerate(lines):
+ license_block.append(line)
+ if line.strip().startswith('*/'):
+ i += 1 # Move past the license block
+ break
+ else:
+ license_block = []
+
+ # Process remaining lines
+ while i < len(lines):
+ line = lines[i]
+ if line.startswith('package '):
+ package_line = line
+ elif line.startswith('import static '):
+ static_imports.append(line)
+ elif line.startswith('import '):
+ normal_imports.append(line)
+ else:
+ other_lines.append(line)
+ i += 1
+
+ # Sort imports
+ static_imports.sort()
+ normal_imports.sort()
+
+ # Build the new file content
+ new_content = []
+
+ # Add license block (always at the top)
+ if license_block:
+ new_content.extend(license_block)
+ if not license_block[-1].endswith('\n'):
+ new_content.append('\n')
+
+ # Add package line
+ if package_line:
+ new_content.append(package_line)
+ if not package_line.endswith('\n'):
+ new_content.append('\n')
+
+ # Add imports
+ if static_imports:
+ new_content.append('\n') # Separate static imports
+ new_content.extend(static_imports)
+ if normal_imports:
+ new_content.append('\n') # Separate normal imports
+ new_content.extend(normal_imports)
+
+ # Add remaining lines (code, comments, etc.)
+ if other_lines:
+ if not new_content[-1].endswith('\n'):
+ new_content.append('\n')
+ new_content.extend(other_lines)
+
+ # Write back to file
+ with open(java_file_path, 'w', encoding='utf-8') as file:
+ file.writelines(new_content)
+
+def process_java_files(root_dir):
+ for subdir, _, files in os.walk(root_dir):
+ for file in files:
+ if file.endswith('.java'):
+ java_file_path = os.path.join(subdir, file)
+ print(f"Processing: {java_file_path}")
+ sort_imports(java_file_path)
+
+if __name__ == "__main__":
+ project_root = input("Enter the root directory of the Java project: ")
+ process_java_files(project_root)
+