in samcli/cli/cli_config_file.py [0:0]
def __call__(self, config_path: Path, config_env: str, cmd_names: List[str]) -> dict:
"""
Get resolved config based on the `file_path` for the configuration file,
`config_env` targeted inside the config file and corresponding `cmd_name`
as denoted by `click`.
Parameters
----------
config_path: Path
The path of configuration file.
config_env: str
The name of the sectional config_env within configuration file.
cmd_names: List[str]
The sam command name as defined by click.
Returns
-------
dict
A dictionary containing the configuration parameters under specified config_env.
"""
resolved_config: dict = {}
# Use default sam config file name if config_path only contain the directory
config_file_path = (
Path(os.path.abspath(config_path))
if config_path
else Path(os.getcwd(), SamConfig.get_default_file(os.getcwd()))
)
config_file_name = config_file_path.name
config_file_dir = config_file_path.parents[0]
samconfig = SamConfig(config_file_dir, config_file_name)
# Enable debug level logging by environment variable "SAM_DEBUG"
if os.environ.get("SAM_DEBUG", "").lower() == "true":
LOG.setLevel(logging.DEBUG)
LOG.debug("Config file location: %s", samconfig.path())
if not samconfig.exists():
LOG.debug("Config file '%s' does not exist", samconfig.path())
return resolved_config
if not self.cmd_names:
self.cmd_names = cmd_names
try:
LOG.debug(
"Loading configuration values from [%s.%s.%s] (env.command_name.section) in config file at '%s'...",
config_env,
self.cmd_names,
self.section,
samconfig.path(),
)
# NOTE(TheSriram): change from tomlkit table type to normal dictionary,
# so that click defaults work out of the box.
resolved_config = dict(samconfig.get_all(self.cmd_names, self.section, env=config_env).items())
handle_parse_options(resolved_config)
LOG.debug("Configuration values successfully loaded.")
LOG.debug("Configuration values are: %s", resolved_config)
except KeyError as ex:
LOG.debug(
"Error reading configuration from [%s.%s.%s] (env.command_name.section) "
"in configuration file at '%s' with : %s",
config_env,
self.cmd_names,
self.section,
samconfig.path(),
str(ex),
)
except Exception as ex:
LOG.debug("Error reading configuration file: %s %s", samconfig.path(), str(ex))
raise ConfigException(f"Error reading configuration: {ex}") from ex
return resolved_config