Files
proxmox/docs/scripts/organize_files.py
defiQUG 8b67fcbda1 Organize docs directory: move 25 files to appropriate locations
- Created docs/00-meta/ for documentation meta files (11 files)
- Created docs/archive/reports/ for reports (5 files)
- Created docs/archive/issues/ for issue tracking (2 files)
- Created docs/bridge/contracts/ for Solidity contracts (3 files)
- Created docs/04-configuration/metamask/ for Metamask configs (3 files)
- Created docs/scripts/ for documentation scripts (2 files)
- Root directory now contains only 3 essential files (89.3% reduction)

All recommended actions from docs directory review complete.
2026-01-06 03:32:20 -08:00

164 lines
6.1 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Script to categorize and organize standalone documentation files
"""
import os
import shutil
from pathlib import Path
from collections import defaultdict
DOCS_DIR = Path("/home/intlc/projects/proxmox/docs")
ARCHIVE_DIR = DOCS_DIR / "archive"
# Category patterns
CATEGORIES = {
"status": [
"STATUS", "PROGRESS", "MIGRATION_STATUS", "CONNECTION_STATUS",
"DEPLOYMENT_STATUS", "VERIFICATION_STATUS", "SERVICE_STATUS",
"CONFIG_STATUS", "SETUP_STATUS", "NEXT_STEPS_STATUS"
],
"completion": [
"COMPLETE", "COMPLETED", "COMPLETION", "SUCCESS", "FINAL",
"ALL_TASKS_COMPLETE", "ALL_STEPS_COMPLETE", "ALL_TODOS_COMPLETE",
"FIX_COMPLETE", "SETUP_COMPLETE", "DEPLOYMENT_COMPLETE",
"IMPLEMENTATION_COMPLETE", "REVIEW_COMPLETE", "VERIFICATION_COMPLETE"
],
"fixes": [
"FIX", "FIXED", "FIXES", "RESOLUTION", "RESOLVED", "CORRECTED",
"QUICK_FIX", "FIX_SUMMARY", "FIX_COMPLETE", "FIX_APPLIED"
],
"tests": [
"TEST", "TESTING", "VERIFICATION", "VALIDATION", "CHECKLIST",
"QUICKSTART_RESULTS", "FUNCTIONALITY_TEST", "INTEGRATION_TEST"
],
"configuration": [
"CONFIGURATION", "CONFIG", "SETUP", "INSTALLATION", "GUIDE",
"INSTRUCTIONS", "QUICK_START", "QUICKSTART", "TROUBLESHOOTING"
],
"historical": [
"SUMMARY", "REPORT", "ANALYSIS", "REVIEW", "INVESTIGATION",
"FINDINGS", "RESULTS", "PLAN", "REFERENCE", "INVENTORY"
]
}
# Files to keep in root (active documentation)
KEEP_IN_ROOT = {
"README.md", "MASTER_INDEX.md", "DOCUMENTATION_REVIEW.md",
"CLEANUP_SUMMARY.md", "DOCUMENTATION_UPGRADE_SUMMARY.md"
}
# Files that should move to numbered directories
MOVE_TO_DIRS = {
"BLOCKSCOUT_CONFIGURATION_GUIDE.md": "08-monitoring",
"BLOCKSCOUT_START_INSTRUCTIONS.md": "08-monitoring",
"BLOCKSCOUT_VERIFICATION_GUIDE.md": "08-monitoring",
"TROUBLESHOOTING_GUIDE.md": "09-troubleshooting",
"DEPLOYMENT_RUNBOOK.md": "03-deployment",
"DEPLOYMENT_READINESS_CHECKLIST.md": "03-deployment",
"PRE_START_CHECKLIST.md": "03-deployment",
"PRE_START_AUDIT_PLAN.md": "03-deployment",
"API_DOCUMENTATION.md": "11-references",
"CONTRACT_ADDRESSES_REFERENCE.md": "11-references",
"TOKEN_LIST_AUTHORING_GUIDE.md": "11-references",
"METAMASK_CONFIGURATION.md": "04-configuration",
"METAMASK_TROUBLESHOOTING_GUIDE.md": "09-troubleshooting",
"METAMASK_QUICK_START_GUIDE.md": "01-getting-started",
"CLOUDFLARE_TUNNEL_CONFIGURATION_GUIDE.md": "04-configuration",
"CLOUDFLARE_TUNNEL_INSTALLATION.md": "04-configuration",
"CLOUDFLARE_TUNNEL_ROUTING_ARCHITECTURE.md": "05-network",
"CLOUDFLARE_EXPLORER_CONFIG.md": "04-configuration",
"CLOUDFLARE_EXPLORER_QUICK_SETUP.md": "04-configuration",
"RPC_PUBLIC_ENDPOINT_ROUTING.md": "05-network",
"CENTRAL_NGINX_ROUTING_SETUP.md": "05-network",
"NGINX_SETUP_FINAL_SUMMARY.md": "05-network",
"CHAIN138_QUICK_START.md": "01-getting-started",
"CHAIN138_BESU_CONFIGURATION.md": "06-besu",
"CHAIN138_AUTOMATION_SCRIPTS.md": "03-deployment",
"CHAIN138_JWT_AUTH_REQUIREMENTS.md": "04-configuration",
"CCIP_SECURITY_DOCUMENTATION.md": "07-ccip",
"CCIP_SENDER_CONTRACT_REFERENCE.md": "07-ccip",
"BRIDGE_TESTING_GUIDE.md": "07-ccip",
"COMPREHENSIVE_INFRASTRUCTURE_REVIEW.md": "02-architecture",
"COMPREHENSIVE_RECOMMENDATIONS.md": "10-best-practices",
"PROXMOX_COMPLETE_RECOMMENDATIONS.md": "10-best-practices",
"PROXMOX_COMPREHENSIVE_REVIEW.md": "02-architecture",
"PROXMOX_FINAL_RECOMMENDATIONS.md": "10-best-practices",
"ENABLE_ROOT_SSH_CONTAINER.md": "04-configuration",
"LVM_THIN_PVE_ENABLED.md": "03-deployment",
"STORAGE_MIGRATION_ISSUE.md": "09-troubleshooting",
"MISSING_CONTAINERS_LIST.md": "03-deployment",
}
def categorize_file(filename):
"""Categorize a file based on its name"""
filename_upper = filename.upper()
# Check if should move to numbered directory
if filename in MOVE_TO_DIRS:
return ("move_to_dir", MOVE_TO_DIRS[filename])
# Check category patterns
for category, patterns in CATEGORIES.items():
for pattern in patterns:
if pattern in filename_upper:
return ("archive", category)
# Default to historical
return ("archive", "historical")
def organize_files():
"""Main organization function"""
moved = defaultdict(list)
errors = []
# Get all markdown files in docs root
for file_path in DOCS_DIR.glob("*.md"):
filename = file_path.name
# Skip files to keep in root
if filename in KEEP_IN_ROOT:
continue
try:
category, dest = categorize_file(filename)
if category == "move_to_dir":
dest_path = DOCS_DIR / dest
dest_path.mkdir(exist_ok=True)
shutil.move(str(file_path), str(dest_path / filename))
moved[f"moved_to_{dest}"].append(filename)
elif category == "archive":
dest_path = ARCHIVE_DIR / dest
dest_path.mkdir(exist_ok=True)
shutil.move(str(file_path), str(dest_path / filename))
moved[f"archived_to_{dest}"].append(filename)
except Exception as e:
errors.append(f"{filename}: {str(e)}")
# Print summary
print("=" * 60)
print("FILE ORGANIZATION SUMMARY")
print("=" * 60)
for category, files in moved.items():
print(f"\n{category}: {len(files)} files")
if len(files) <= 10:
for f in files:
print(f" - {f}")
else:
for f in files[:5]:
print(f" - {f}")
print(f" ... and {len(files) - 5} more")
if errors:
print(f"\nERRORS ({len(errors)}):")
for error in errors:
print(f" - {error}")
print(f"\nTotal files organized: {sum(len(files) for files in moved.values())}")
return moved, errors
if __name__ == "__main__":
print("Starting file organization...")
moved, errors = organize_files()
print("\nOrganization complete!")