"""Create a user with API token. Usage: python -m scripts.create_user testuser --display-name "Test User" python -m scripts.create_user guest --token my-custom-token-32chars-min """ from __future__ import annotations import argparse import sys from app.db.base import SessionLocal, init_db from app.auth.service import create_user def main() -> int: parser = argparse.ArgumentParser(description="Create Home Assistant user") parser.add_argument("username", help="Unique username (lowercase)") parser.add_argument("--display-name", default="", help="Display name") parser.add_argument("--token", default="", help="Custom API token (auto-generated if empty)") args = parser.parse_args() init_db() db = SessionLocal() try: user, plain_token = create_user( db, username=args.username, display_name=args.display_name or args.username, api_token=args.token or None, ) except ValueError as exc: print(f"Error: {exc}", file=sys.stderr) return 1 finally: db.close() print(f"Created user id={user.id} username={user.username}") print(f"API token (save it, shown once):\n{plain_token}") return 0 if __name__ == "__main__": raise SystemExit(main())