76 lines
2.3 KiB
Python
Executable file
76 lines
2.3 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
"""
|
|
Cleanup script for Flask applications
|
|
Removes __pycache__ directories, .pyc files, and database files
|
|
"""
|
|
|
|
import os
|
|
import shutil
|
|
import argparse
|
|
|
|
|
|
def cleanup(directory, verbose=False):
|
|
"""Clean up cache files and database files"""
|
|
cleaned_dirs = 0
|
|
cleaned_files = 0
|
|
|
|
# Files to clean
|
|
file_patterns = [".pyc", ".pyo", ".~", ".swp", ".swo"]
|
|
db_patterns = [".db", ".sqlite", ".sqlite3", "-journal"]
|
|
|
|
# Directories to clean
|
|
dir_patterns = ["__pycache__", ".pytest_cache", ".coverage", "htmlcov"]
|
|
|
|
# Clean main directory
|
|
for root, dirs, files in os.walk(directory):
|
|
# Clean directories
|
|
for dir_name in list(dirs):
|
|
if dir_name in dir_patterns:
|
|
dir_path = os.path.join(root, dir_name)
|
|
if verbose:
|
|
print(f"Removing directory: {dir_path}")
|
|
shutil.rmtree(dir_path)
|
|
cleaned_dirs += 1
|
|
dirs.remove(dir_name)
|
|
|
|
# Clean files
|
|
for file in files:
|
|
if any(file.endswith(pattern) for pattern in file_patterns + db_patterns):
|
|
file_path = os.path.join(root, file)
|
|
if verbose:
|
|
print(f"Removing file: {file_path}")
|
|
os.remove(file_path)
|
|
cleaned_files += 1
|
|
|
|
# Clean instance directory
|
|
instance_dir = os.path.join(directory, "instance")
|
|
if os.path.exists(instance_dir):
|
|
for file in os.listdir(instance_dir):
|
|
if any(file.endswith(pattern) for pattern in db_patterns):
|
|
file_path = os.path.join(instance_dir, file)
|
|
if verbose:
|
|
print(f"Removing database file: {file_path}")
|
|
os.remove(file_path)
|
|
cleaned_files += 1
|
|
|
|
print(
|
|
f"Cleanup completed! Removed {cleaned_dirs} directories and {cleaned_files} files."
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(
|
|
description="Clean up Flask application cache and database files"
|
|
)
|
|
parser.add_argument(
|
|
"-v", "--verbose", action="store_true", help="Show detailed output"
|
|
)
|
|
parser.add_argument(
|
|
"-d",
|
|
"--directory",
|
|
default=".",
|
|
help="Directory to clean (default: current directory)",
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
cleanup(args.directory, args.verbose)
|