Files
T
orrisroot b95fc0cd7d refactor(config): abstract config storage and enable dependency injection
Abstract the configuration storage mechanism to allow using custom
configurations, such as in-memory setups, when using the tool as
a library. This aligns the configuration architecture with the
session cache abstraction.

- Define ConfigInterface protocol and InMemoryConfig class
- Make CacheFile, InMemoryCache, ConfigFile, and InMemoryConfig
  explicitly inherit their interfaces
- Update MdrsService and MdrsClient to accept customizable
  config_class and config instances
- Add validation to check remote parameter consistency in
  create_connection
- Remove unused imports across command files
2026-07-02 23:30:33 +09:00

35 lines
1.1 KiB
Python

from argparse import Namespace
from typing import Any, Final
from mdrsclient.commands.base import BaseCommand
class WhoamiCommand(BaseCommand):
ANONYMOUS_USERNAME: Final[str] = "(Anonymous)"
@classmethod
def register(cls, parsers: Any) -> None:
whoami_parser = parsers.add_parser("whoami", help="show current user name")
whoami_parser.add_argument("remote", help="label of remote host")
whoami_parser.set_defaults(func=cls.func)
@classmethod
def func(cls, args: Namespace) -> None:
remote = str(args.remote)
cls.whoami(remote)
@classmethod
def whoami(cls, remote: str) -> None:
from mdrsclient.client import MdrsClient
remote_host = MdrsClient.parse_remote_host(remote)
client = MdrsClient.from_remote(remote_host)
if client.connection.token is not None and client.connection.token.is_expired:
client.logout()
try:
user = client.whoami()
username = user.username if user is not None else cls.ANONYMOUS_USERNAME
except Exception:
username = cls.ANONYMOUS_USERNAME
print(username)