from __future__ import annotations

import argparse

from ..context import CliContext


def register(subparsers: argparse._SubParsersAction[argparse.ArgumentParser]) -> None:
    parser = subparsers.add_parser("portal", help="门户访问")
    portal_subparsers = parser.add_subparsers(dest="portal_command", required=True)

    list_parser = portal_subparsers.add_parser("list", help="列出当前用户可访问的门户")
    list_parser.set_defaults(handler=_handle_list, format_hint="portal_list")

    get_parser = portal_subparsers.add_parser("get", help="读取门户内容清单")
    get_parser.add_argument("--dash-key", required=True)
    get_parser.set_defaults(handler=_handle_get, format_hint="portal_get")


def _handle_list(args: argparse.Namespace, context: CliContext) -> dict:
    return context.resource.portal_list(profile=args.profile)


def _handle_get(args: argparse.Namespace, context: CliContext) -> dict:
    return context.resource.portal_get(profile=args.profile, dash_key=args.dash_key)
