in knack/config.py [0:0]
def __init__(self, config_dir=None, config_env_var_prefix=None, config_file_name=None, use_local_config=None):
""" Manages configuration options available in the CLI
:param config_dir: The directory to store config files
:type config_dir: str
:param config_env_var_prefix: The prefix for config environment variables
:type config_env_var_prefix: str
:param config_file_name: The name given to the config file to be created
:type config_file_name: str
"""
config_dir = config_dir or CLIConfig._DEFAULT_CONFIG_DIR
ensure_dir(config_dir)
config_env_var_prefix = config_env_var_prefix or CLIConfig._DEFAULT_CONFIG_ENV_VAR_PREFIX
env_var_prefix = '{}_'.format(config_env_var_prefix.upper())
default_config_dir = os.path.expanduser(config_dir)
self.config_dir = os.environ.get('{}CONFIG_DIR'.format(env_var_prefix), default_config_dir)
configuration_file_name = config_file_name or CLIConfig._DEFAULT_CONFIG_FILE_NAME
self.config_path = os.path.join(self.config_dir, configuration_file_name)
self._env_var_format = '{}{}'.format(env_var_prefix, '{section}_{option}')
self.defaults_section_name = CLIConfig._CONFIG_DEFAULTS_SECTION
self.use_local_config = use_local_config
self._config_file_chain = []
current_dir = None
try:
current_dir = os.getcwd()
except FileNotFoundError:
from .log import get_logger
logger = get_logger()
logger.warning("The working directory has been deleted or recreated. "
"Local config is ignored.")
config_dir_name = os.path.basename(self.config_dir)
while current_dir:
current_config_dir = os.path.join(current_dir, config_dir_name)
# Stop if already in the default .azure
if (os.path.normcase(os.path.normpath(current_config_dir)) ==
os.path.normcase(os.path.normpath(self.config_dir))):
break
if os.path.isdir(current_config_dir):
self._config_file_chain.append(_ConfigFile(current_config_dir,
os.path.join(current_config_dir, configuration_file_name)))
# Stop if already in root drive
if current_dir == os.path.dirname(current_dir):
break
current_dir = os.path.dirname(current_dir)
self._config_file_chain.append(_ConfigFile(self.config_dir, self.config_path))