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.
This commit is contained in:
179
docs/scripts/organize-standalone-files.sh
Normal file
179
docs/scripts/organize-standalone-files.sh
Normal file
@@ -0,0 +1,179 @@
|
||||
#!/bin/bash
|
||||
# Script to categorize and organize standalone documentation files
|
||||
|
||||
DOCS_DIR="/home/intlc/projects/proxmox/docs"
|
||||
ARCHIVE_DIR="$DOCS_DIR/archive"
|
||||
|
||||
# Categories
|
||||
STATUS_FILES=(
|
||||
# Status and completion reports
|
||||
"ALLOWANCE_FIX_STATUS.md"
|
||||
"ALL_COMPONENTS_DEPLOYMENT_STATUS.md"
|
||||
"BLOCKSCOUT_COMPLETE_STATUS.md"
|
||||
"BLOCKSCOUT_FINAL_STATUS.md"
|
||||
"BLOCKSCOUT_IP_VERIFICATION.md"
|
||||
"BLOCKSCOUT_MIGRATION_STATUS.md"
|
||||
"BLOCKSCOUT_SSL_COMPLETE_STATUS.md"
|
||||
"BLOCKSCOUT_STATUS_AND_VERIFICATION.md"
|
||||
"CCIP_MONITOR_STATUS.md"
|
||||
"CHAIN138_COMPLETION_SUMMARY.md"
|
||||
"CLUSTER_CONNECTION_STATUS.md"
|
||||
"CODE_COMMAND_WRAPPER_STATUS.md"
|
||||
"COMPLETE_NEXT_STEPS_STATUS.md"
|
||||
"COMPLETE_PROJECT_STATUS.md"
|
||||
"CONTRACT_DEPLOYMENT_PROGRESS.md"
|
||||
"CONTRACT_DEPLOYMENT_STATUS_AND_NEXT_STEPS.md"
|
||||
"CONTRACT_VERIFICATION_STATUS.md"
|
||||
"ETHEREUM_MAINNET_CONFIGURATION_STATUS.md"
|
||||
"ETHEREUM_MAINNET_CONFIG_STATUS.md"
|
||||
"ETHEREUM_MAINNET_CONTRACTS_VERIFICATION_STATUS.md"
|
||||
"ETHEREUM_MAINNET_DEPLOYMENT_STATUS.md"
|
||||
"ETHERSCAN_VERIFICATION_STATUS.md"
|
||||
"EXPLORER_STATUS_REVIEW.md"
|
||||
"LETS_ENCRYPT_SETUP_STATUS.md"
|
||||
"MIGRATION_STATUS_UPDATE.md"
|
||||
"NEXT_STEPS_COMPLETION_STATUS.md"
|
||||
"NEXT_STEPS_STATUS.md"
|
||||
"ORACLE_PUBLISHER_SERVICE_STATUS.md"
|
||||
"REMAINING_STEPS.md"
|
||||
"THIRDWEB_SECRETS_STATUS.md"
|
||||
"VERIFICATION_FINAL_STATUS.md"
|
||||
)
|
||||
|
||||
COMPLETION_FILES=(
|
||||
# Completion reports
|
||||
"ADMIN_VERIFICATION_COMPLETE.md"
|
||||
"ALI_INFRASTRUCTURE_COMPLETE.md"
|
||||
"ALLOWANCE_FIX_COMPLETE.md"
|
||||
"ALL_ALLOWANCES_FIX_COMPLETE.md"
|
||||
"ALL_ISSUES_FIXED_SUMMARY.md"
|
||||
"ALL_NEXT_ACTIONS_COMPLETE.md"
|
||||
"ALL_NEXT_STEPS_COMPLETE.md"
|
||||
"ALL_NEXT_STEPS_COMPLETE_FINAL.md"
|
||||
"ALL_NEXT_STEPS_COMPLETE_SUMMARY.md"
|
||||
"ALL_OPTIONAL_TASKS_COMPLETE.md"
|
||||
"ALL_RECOMMENDATIONS_COMPLETE.md"
|
||||
"ALL_REMAINING_ACTIONS_COMPLETE.md"
|
||||
"ALL_REMAINING_TASKS_COMPLETE.md"
|
||||
"ALL_STEPS_COMPLETE.md"
|
||||
"ALL_TASKS_COMPLETE_FINAL.md"
|
||||
"ALL_TASKS_COMPLETE_SUMMARY.md"
|
||||
"ALL_TODOS_COMPLETE.md"
|
||||
"ALL_TODOS_COMPLETE_FINAL.md"
|
||||
"BLOCKSCOUT_ALL_COMPLETE.md"
|
||||
"BLOCKSCOUT_ALL_FIXES_COMPLETE.md"
|
||||
"BLOCKSCOUT_ALL_STEPS_COMPLETE.md"
|
||||
"BLOCKSCOUT_ALL_TASKS_COMPLETE.md"
|
||||
"BLOCKSCOUT_CLOUDFLARE_SETUP_COMPLETE.md"
|
||||
"BLOCKSCOUT_COMPLETE_FINAL.md"
|
||||
"BLOCKSCOUT_COMPLETE_SETUP_FINAL.md"
|
||||
"BLOCKSCOUT_COMPLETE_SUCCESS.md"
|
||||
"BLOCKSCOUT_COMPLETE_SUMMARY.md"
|
||||
"BLOCKSCOUT_FINAL_COMPLETE.md"
|
||||
"BLOCKSCOUT_FINAL_SUCCESS.md"
|
||||
"BLOCKSCOUT_FIX_COMPLETE.md"
|
||||
"BLOCKSCOUT_FIXED_SUCCESS.md"
|
||||
"BLOCKSCOUT_IMPLEMENTATION_COMPLETE.md"
|
||||
"BLOCKSCOUT_METAMASK_FIX_COMPLETE.md"
|
||||
"BLOCKSCOUT_SSL_SETUP_COMPLETE.md"
|
||||
"BLOCKSCOUT_STATIC_IP_COMPLETE.md"
|
||||
"BLOCKSCOUT_WEB_INTERFACE_FIXED.md"
|
||||
"BRIDGE_CONFIGURATION_COMPLETE.md"
|
||||
"BRIDGE_MONITORING_EXPLORER_COMPLETE.md"
|
||||
"BRIDGE_VERIFICATION_FINAL_STATUS.md"
|
||||
"CCIP_ALL_TASKS_COMPLETE.md"
|
||||
"CCIP_ALL_TASKS_SUMMARY.md"
|
||||
"CCIP_MONITOR_FIX_COMPLETE.md"
|
||||
"CHAIN138_COMPLETE_IMPLEMENTATION.md"
|
||||
"CHAIN138_REVIEW_COMPLETE.md"
|
||||
"CLOUDFLARED_UPDATE_COMPLETE.md"
|
||||
"CLOUDFLARE_CONFIGURATION_COMPLETE.md"
|
||||
"CLOUDFLARE_EXPLORER_SETUP_COMPLETE.md"
|
||||
"CLUSTER_NODE_NAMES_FIXED.md"
|
||||
"COMPLETE_DEPLOYMENT_SUMMARY.md"
|
||||
"CONTRACT_DEPLOYMENT_COMPLETE_SUMMARY.md"
|
||||
"CONTRACT_DEPLOYMENT_SUCCESS.md"
|
||||
"ETHEREUM_MAINNET_ALL_TASKS_COMPLETE.md"
|
||||
"ETHEREUM_MAINNET_DEPLOYMENT_COMPLETE.md"
|
||||
"ETHEREUM_MAINNET_DEPLOYMENT_SUCCESS.md"
|
||||
"ETHEREUM_MAINNET_NEXT_STEPS_COMPLETE.md"
|
||||
"EXPLORER_COMPLETE_FUNCTIONALITY_REVIEW.md"
|
||||
"EXPLORER_FEATURES_COMPLETE.md"
|
||||
"EXPLORER_RESTORATION_COMPLETE.md"
|
||||
"EXPLORER_RESTORATION_FINAL_STATUS.md"
|
||||
"EXPLORER_SETUP_COMPLETE.md"
|
||||
"FINAL_BRIDGE_VERIFICATION_COMPLETE.md"
|
||||
"FINAL_COMPLETION_STATUS.md"
|
||||
"FINAL_SETUP_COMPLETE.md"
|
||||
"FIXES_COMPLETE_SUMMARY.md"
|
||||
"IP_ADDRESS_REVIEW_COMPLETE.md"
|
||||
"LETS_ENCRYPT_COMPLETE_SUMMARY.md"
|
||||
"LETS_ENCRYPT_RPC_2500_COMPLETE.md"
|
||||
"LETS_ENCRYPT_SETUP_COMPLETE.md"
|
||||
"LETS_ENCRYPT_SETUP_SUCCESS.md"
|
||||
"METAMASK_INTEGRATION_COMPLETE.md"
|
||||
"METAMASK_SUBMODULE_PUSH_COMPLETE.md"
|
||||
"METAMASK_SUBMODULE_SETUP_COMPLETE.md"
|
||||
"MIRACLES_IN_MOTION_CLOUDFLARE_COMPLETE.md"
|
||||
"MIRACLES_IN_MOTION_DEPLOYMENT_COMPLETE.md"
|
||||
"MIRACLES_IN_MOTION_DEPLOYMENT_FINAL.md"
|
||||
"MIRACLES_IN_MOTION_DEPLOYMENT_FINAL_STATUS.md"
|
||||
"MIRACLES_IN_MOTION_TUNNEL_ACTIVE.md"
|
||||
"NEXT_ACTIONS_COMPLETED.md"
|
||||
"NEXT_STEPS_COMPLETE.md"
|
||||
"NGINX_RPC_2500_COMPLETE_SETUP.md"
|
||||
"NGINX_RPC_2500_SETUP_COMPLETE.md"
|
||||
"ORACLE_PUBLISHER_CONFIGURATION_COMPLETE.md"
|
||||
"ORACLE_PUBLISHER_FINAL_FIX_COMPLETE.md"
|
||||
"ORACLE_PUBLISHER_SERVICE_COMPLETE.md"
|
||||
"PROXMOX_PVE_PVE2_FIX_COMPLETE.md"
|
||||
"QUICKSTART_COMPLETE_SUMMARY.md"
|
||||
"R630_01_THIN1_CONFIGURED.md"
|
||||
"R630_02_VM_RECOVERY_COMPLETE.md"
|
||||
"RPC_TROUBLESHOOTING_COMPLETE.md"
|
||||
"STORAGE_ENABLED_SUMMARY.md"
|
||||
"STORAGE_FIX_COMPLETE.md"
|
||||
"STORAGE_MIGRATION_FIX_SUMMARY.md"
|
||||
"THIRDWEB_BRIDGE_CHAIN138_SUPPORTED.md"
|
||||
"THIRDWEB_CREDENTIALS_CONFIGURED.md"
|
||||
"VERIFICATION_COMPLETE_SUMMARY.md"
|
||||
"VERIFICATION_QUICKSTART_RESULTS.md"
|
||||
"WETH_UTILITIES_EXPLORER_COMPLETE.md"
|
||||
)
|
||||
|
||||
FIX_FILES=(
|
||||
# Fix reports
|
||||
"BLOCKSCOUT_EXPLORER_FIX.md"
|
||||
"BLOCKSCOUT_FIREWALL_FIX_COMPLETE.md"
|
||||
"BLOCKSCOUT_FIXES_APPLIED.md"
|
||||
"BLOCKSCOUT_HEADER_LINKS_FIX.md"
|
||||
"BLOCKSCOUT_IP_FIX_APPLIED.md"
|
||||
"BLOCKSCOUT_METAMASK_ETHERS_FIX.md"
|
||||
"BLOCKSCOUT_RESTART_FIX.md"
|
||||
"BLOCKSCOUT_WEB_INTERFACE_404_FIX.md"
|
||||
"CHAIN138_ACCESS_CONTROL_CORRECTED.md"
|
||||
"ETHERSCAN_BYTECODE_MISMATCH_FIX.md"
|
||||
"ETHERSCAN_VERIFICATION_BYTECODE_MISMATCH_FIX.md"
|
||||
"ETHERSCAN_VERIFICATION_CORRECTED.md"
|
||||
"ETHERSCAN_VERIFICATION_FIXED.md"
|
||||
"ETHERSCAN_VERIFICATION_FIX_COMPILER_VERSION.md"
|
||||
"FIXES_APPLIED_SUMMARY.md"
|
||||
"METAMASK_RPC_CHAIN_ID_ERROR_FIX.md"
|
||||
"METAMASK_TRANSACTION_DROPPED_FIX.md"
|
||||
"METAMASK_USD_PRICE_FIX.md"
|
||||
"METAMASK_WETH9_FIX_INSTRUCTIONS.md"
|
||||
"MIGRATION_STORAGE_FIX.md"
|
||||
"NGINX_BESU_CLOUDFLARED_FIX_SUMMARY.md"
|
||||
"NGINX_PUBLIC_ENDPOINTS_FIX_COMPLETE.md"
|
||||
"ORACLE_API_KEYS_QUICK_FIX.md"
|
||||
"ORACLE_PUBLISHER_ALL_FIXES_AND_RECOMMENDATIONS.md"
|
||||
"ORACLE_PUBLISHER_COMPLETE_FIX_SUMMARY.md"
|
||||
"ORACLE_PUBLISHER_COMPREHENSIVE_FIX.md"
|
||||
"ORACLE_PUBLISHER_FINAL_FIX_COMPLETE.md"
|
||||
"R630_01_THIN1_FIX.md"
|
||||
"THIRDWEB_BRIDGE_QUICK_FIX.md"
|
||||
"VERIFICATION_CRITICAL_FIX.md"
|
||||
"VERIFICATION_FINAL_CORRECTED.md"
|
||||
)
|
||||
|
||||
echo "Organization script created. Ready to categorize files."
|
||||
163
docs/scripts/organize_files.py
Executable file
163
docs/scripts/organize_files.py
Executable file
@@ -0,0 +1,163 @@
|
||||
#!/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!")
|
||||
Reference in New Issue
Block a user