mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 00:58:34 +00:00
refactor: reorganize scripts under bash/python
This commit is contained in:
92
scripts/python/parse-config-presets.py
Executable file
92
scripts/python/parse-config-presets.py
Executable file
@@ -0,0 +1,92 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user