#!/usr/bin/env python
import argparse
import asyncio
import json
from server.main import generate_sprite, list_available_presets, ping
def _print_json_brief(obj: dict, keys: list[str]) -> None:
for k in keys:
if k in obj:
print(f"{k}: {obj[k]}")
async def main() -> int:
parser = argparse.ArgumentParser(description="Quick smoke tests for ComfyAI-MCP-GameAssets")
parser.add_argument("--list-presets", action="store_true")
parser.add_argument("--prompt", default="a clean UI icon of a red health potion")
parser.add_argument("--preset", default="icon")
parser.add_argument("--size", type=int, default=256)
parser.add_argument("--seed", type=int, default=42)
parser.add_argument("--steps", type=int, default=20)
parser.add_argument("--save", action="store_true")
args = parser.parse_args()
if args.save is False:
args.save = True
status = json.loads(await ping())
print("=== ping ===")
_print_json_brief(status, ["status", "backend", "backend_type", "backend_healthy"])
print()
if args.list_presets:
print("=== presets ===")
presets = json.loads(await list_available_presets())
for name in sorted(presets.keys()):
print(name)
print()
print("=== generate_sprite ===")
result = await generate_sprite(
prompt=args.prompt,
preset=args.preset,
width=args.size,
height=args.size,
seed=args.seed,
steps=args.steps,
save_to_file=args.save
)
payload = json.loads(result)
if payload.get("success"):
_print_json_brief(payload, ["preset", "prompt", "file_path", "hash", "width", "height"])
return 0
print(payload)
return 1
if __name__ == "__main__":
raise SystemExit(asyncio.run(main()))