mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 17:09:09 +00:00
92 lines
3.0 KiB
Python
Executable File
92 lines
3.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Parse configuration preset metadata for setup.sh
|
|
"""
|
|
|
|
import sys
|
|
import argparse
|
|
from pathlib import Path
|
|
|
|
|
|
def parse_preset_metadata(preset_file: Path):
|
|
"""Parse CONFIG_NAME and CONFIG_DESCRIPTION from a preset file."""
|
|
if not preset_file.exists():
|
|
return None, None
|
|
|
|
config_name = None
|
|
config_description = None
|
|
|
|
try:
|
|
with open(preset_file, 'r', encoding='utf-8') as f:
|
|
for line in f:
|
|
line = line.strip()
|
|
if line.startswith('# CONFIG_NAME:'):
|
|
config_name = line[14:].strip()
|
|
elif line.startswith('# CONFIG_DESCRIPTION:'):
|
|
config_description = line[21:].strip()
|
|
elif not line.startswith('#'):
|
|
# Stop at first non-comment line
|
|
break
|
|
except Exception:
|
|
return None, None
|
|
|
|
return config_name, config_description
|
|
|
|
|
|
def list_presets(presets_dir: Path):
|
|
"""List all available presets with their metadata."""
|
|
if not presets_dir.exists():
|
|
return
|
|
|
|
presets = []
|
|
for preset_file in presets_dir.glob("*.conf"):
|
|
preset_key = preset_file.stem
|
|
config_name, config_description = parse_preset_metadata(preset_file)
|
|
|
|
if config_name is None:
|
|
config_name = preset_key.replace('-', ' ').title()
|
|
if config_description is None:
|
|
config_description = f"Configuration preset: {preset_key}"
|
|
|
|
presets.append((preset_key, config_name, config_description))
|
|
|
|
# Sort presets, but ensure 'none' comes first
|
|
presets.sort(key=lambda x: (0 if x[0] == 'none' else 1, x[0]))
|
|
|
|
for preset_key, config_name, config_description in presets:
|
|
print(f"{preset_key}\t{config_name}\t{config_description}")
|
|
|
|
|
|
def get_preset_info(presets_dir: Path, preset_key: str):
|
|
"""Get information for a specific preset."""
|
|
preset_file = presets_dir / f"{preset_key}.conf"
|
|
config_name, config_description = parse_preset_metadata(preset_file)
|
|
|
|
if config_name is None:
|
|
config_name = preset_key.replace('-', ' ').title()
|
|
if config_description is None:
|
|
config_description = f"Configuration preset: {preset_key}"
|
|
|
|
print(f"{config_name}\t{config_description}")
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Parse configuration preset metadata")
|
|
parser.add_argument("command", choices=["list", "info"], help="Command to execute")
|
|
parser.add_argument("--presets-dir", default="./config/presets", help="Presets directory")
|
|
parser.add_argument("--preset", help="Preset name for 'info' command")
|
|
|
|
args = parser.parse_args()
|
|
presets_dir = Path(args.presets_dir)
|
|
|
|
if args.command == "list":
|
|
list_presets(presets_dir)
|
|
elif args.command == "info":
|
|
if not args.preset:
|
|
print("Error: --preset required for 'info' command", file=sys.stderr)
|
|
sys.exit(1)
|
|
get_preset_info(presets_dir, args.preset)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main() |