Source code for gamesheet_sdk.teams.cli.helpers
# Copyright (c) 2026 bdperkin
# SPDX-License-Identifier: MIT
"""CLI helper functions for the teams dashboard."""
from __future__ import annotations
from typing import TYPE_CHECKING
import rich_click as click
from click.exceptions import Exit
from gamesheet_sdk.common.auth.tokens import (
load_access_token,
load_refresh_token,
save_tokens,
)
from gamesheet_sdk.common.cli.helpers import run_action_or_exit
from gamesheet_sdk.teams.session import TeamsAuthenticatedSession
if TYPE_CHECKING:
from gamesheet_sdk.common.config import Config
__all__ = [
"build_authenticated_session",
"run_action_or_exit",
]
[docs]
def build_authenticated_session(
config: Config,
) -> TeamsAuthenticatedSession:
"""Build a TeamsAuthenticatedSession from saved tokens.
Args:
config (Config): The application config.
Returns:
TeamsAuthenticatedSession: A TeamsAuthenticatedSession ready to use.
Raises:
Exit: If no tokens are saved.
"""
access = load_access_token(config)
refresh = load_refresh_token(config)
if access is None or refresh is None:
click.secho(
"No saved session found. Run `gamesheet-teams login` first.",
fg="red",
err=True,
)
raise Exit(1)
return TeamsAuthenticatedSession(
config,
access_token=access,
refresh_token=refresh,
on_refresh=lambda tokens: save_tokens(config, **tokens),
)