49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Print the top-level marketplace name from any marketplace.json file."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
|
|
def default_marketplace_path() -> Path:
|
|
return Path.home() / ".agents" / "plugins" / "marketplace.json"
|
|
|
|
|
|
def parse_args() -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(
|
|
description=(
|
|
"Print the top-level marketplace name from marketplace.json. Defaults to the personal "
|
|
"marketplace path under the current home directory."
|
|
)
|
|
)
|
|
parser.add_argument(
|
|
"--marketplace-path",
|
|
default=str(default_marketplace_path()),
|
|
help="Path to marketplace.json",
|
|
)
|
|
return parser.parse_args()
|
|
|
|
|
|
def main() -> None:
|
|
args = parse_args()
|
|
marketplace_path = Path(args.marketplace_path).expanduser().resolve()
|
|
payload = json.loads(marketplace_path.read_text(encoding="utf-8"))
|
|
if not isinstance(payload, dict):
|
|
raise ValueError(f"{marketplace_path} must contain a JSON object.")
|
|
name = payload.get("name")
|
|
if not isinstance(name, str) or not name.strip():
|
|
raise ValueError(f"{marketplace_path} must contain a non-empty string 'name'.")
|
|
print(name.strip())
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except Exception as err: # noqa: BLE001 - CLI should surface a single clear message.
|
|
print(str(err), file=sys.stderr)
|
|
raise SystemExit(1) from err
|