File size: 799 Bytes
fbbf45b
d8a93fc
 
 
fbbf45b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from typing import Dict, Optional


class CommandParser:
    VALID_COMMANDS = ["MODE", "CARD", "REPO", "RUN", "TEST", "LEDGER", "RESET", "STATE", "HELP"]

    @staticmethod
    def parse(command: str) -> Dict:
        command = (command or "").strip()
        if not command:
            return {"valid": False, "error": "Empty command"}

        parts = command.split(maxsplit=1)
        cmd = parts[0].upper()
        arg = parts[1] if len(parts) > 1 else None

        if cmd not in CommandParser.VALID_COMMANDS:
            return {
                "valid": False,
                "error": f"Unknown command: {cmd}",
                "suggestion": f"Valid: {', '.join(CommandParser.VALID_COMMANDS)}",
            }

        return {"valid": True, "command": cmd, "argument": arg, "raw": command}