Source code for oras.main.login

__author__ = "Vanessa Sochat"
__copyright__ = "Copyright The ORAS Authors."
__license__ = "Apache-2.0"

import os
from typing import Optional

import oras.auth.utils as auth_utils
import oras.utils


[docs] class DockerClient: """ If running inside a container (or similar without docker) do a manual login """
[docs] def login( self, username: str, password: str, registry: str, dockercfg_path: Optional[str] = None, ) -> dict: """ Manual login means loading and checking the config file :param registry: if provided, use this custom provider instead of default :type registry: oras.provider.Registry or None :param username: the user account name :type username: str :param password: the user account password :type password: str :param dockercfg_str: docker config path :type dockercfg_str: list """ if not dockercfg_path: dockercfg_path = oras.utils.find_docker_config(exists=False) if os.path.exists(dockercfg_path): # type: ignore cfg = oras.utils.read_json(dockercfg_path) # type: ignore else: oras.utils.mkdir_p(os.path.dirname(dockercfg_path)) # type: ignore cfg = {"auths": {}} if registry in cfg["auths"]: cfg["auths"][registry]["auth"] = auth_utils.get_basic_auth( username, password ) else: cfg["auths"][registry] = { "auth": auth_utils.get_basic_auth(username, password) } oras.utils.write_json(cfg, dockercfg_path) # type: ignore return {"Status": "Login Succeeded"}