azure-devops/azext_devops/dev/common/config.py (27 lines of code) (raw):
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
import os
from knack.config import CLIConfig, get_config_parser
from knack.util import ensure_dir
from .const import (AZ_DEVOPS_CONFIG_DIR_ENVKEY,
AZ_DEVOPS_DEFAULT_CONFIG_DIR,
CLI_ENV_VARIABLE_PREFIX,
CONFIG_FILE_NAME)
_UNSET = object()
def _get_config_dir():
azure_devops_config_dir = os.getenv(AZ_DEVOPS_CONFIG_DIR_ENVKEY, None) or AZ_DEVOPS_DEFAULT_CONFIG_DIR
# Create a directory if it doesn't exist
ensure_dir(azure_devops_config_dir)
return azure_devops_config_dir
AZ_DEVOPS_GLOBAL_CONFIG_DIR = _get_config_dir()
AZ_DEVOPS_GLOBAL_CONFIG_PATH = os.path.join(AZ_DEVOPS_GLOBAL_CONFIG_DIR, CONFIG_FILE_NAME)
class AzDevopsConfig(CLIConfig):
def __init__(self, config_dir=AZ_DEVOPS_GLOBAL_CONFIG_DIR, config_env_var_prefix=CLI_ENV_VARIABLE_PREFIX):
super(AzDevopsConfig, self).__init__(config_dir=config_dir, config_env_var_prefix=config_env_var_prefix)
self.config_parser = get_config_parser()
azdevops_config = AzDevopsConfig()
azdevops_config.config_parser.read(AZ_DEVOPS_GLOBAL_CONFIG_PATH)
def set_global_config_value(section, option, value):
azdevops_config.set_value(section, option, _normalize_config_value(value))
azdevops_config.config_parser.read(AZ_DEVOPS_GLOBAL_CONFIG_PATH)
def _normalize_config_value(value):
if value:
value = '' if value in ["''", '""'] else value
return value