MosswartOverlord/inventory-service/extract_all_missing_enums.py

87 lines
No EOL
2.6 KiB
Python

#!/usr/bin/env python3
"""
Comprehensive enum extraction from ALL Mag-Plugins Constants files.
This script extracts ALL missing enum values to complete our enum database.
"""
import json
import re
import os
from pathlib import Path
def extract_coverage_mask():
"""Extract complete CoverageMask enum with ALL values."""
file_path = "../unused/Mag-Plugins/Shared/Constants/CoverageMask.cs"
coverage_values = {}
with open(file_path, 'r') as f:
content = f.read()
# Extract enum values using regex
enum_pattern = r'(\w+)\s*=\s*0x([0-9A-Fa-f]+)'
matches = re.findall(enum_pattern, content)
for name, hex_value in matches:
decimal_value = int(hex_value, 16)
coverage_values[str(decimal_value)] = name
return {
"name": "CoverageMask",
"values": coverage_values,
"source_file": "CoverageMask.cs"
}
def extract_bool_value_key():
"""Extract BoolValueKey enum (currently missing)."""
file_path = "../unused/Mag-Plugins/Shared/Constants/BoolValueKey.cs"
bool_values = {}
with open(file_path, 'r') as f:
content = f.read()
# Extract enum values
enum_pattern = r'(\w+)\s*=\s*(\d+)'
matches = re.findall(enum_pattern, content)
for name, value in matches:
bool_values[value] = name
return {
"name": "BoolValueKey",
"values": bool_values,
"source_file": "BoolValueKey.cs"
}
def load_current_database():
"""Load current enum database."""
with open('comprehensive_enum_database_v2.json', 'r') as f:
return json.load(f)
def update_enum_database():
"""Update the enum database with ALL missing values."""
print("Loading current enum database...")
db = load_current_database()
print("Extracting complete CoverageMask...")
complete_coverage = extract_coverage_mask()
db['enums']['CoverageMask'] = complete_coverage
print("Extracting BoolValueKey...")
bool_values = extract_bool_value_key()
db['enums']['BoolValueKey'] = bool_values
# Update metadata
db['metadata']['last_updated'] = "2025-06-12"
db['metadata']['notes'] = "COMPLETE extraction: Added missing CoverageMask values (1,2,4,16,etc) and BoolValueKey enum"
print("Saving updated database...")
with open('comprehensive_enum_database_v2.json', 'w') as f:
json.dump(db, f, indent=2)
print("✅ Enum database updated successfully!")
print(f"✅ CoverageMask now has {len(complete_coverage['values'])} values")
print(f"✅ BoolValueKey now has {len(bool_values['values'])} values")
if __name__ == "__main__":
update_enum_database()