Gems/AWSCore/Code/Tools/ResourceMappingTool/model/configuration.py (68 lines of code) (raw):
"""
Copyright (c) Contributors to the Open 3D Engine Project.
For complete copyright and license terms please see the LICENSE at the root of this distribution.
SPDX-License-Identifier: Apache-2.0 OR MIT
"""
from __future__ import annotations
import logging
from typing import List
from model import error_messages
from utils import file_utils
logger = logging.getLogger(__name__)
class Configuration(object):
"""
Data structure to store the global configuration for resource mapping tool
"""
def __init__(self) -> None:
self._config_directory: str = ""
self._config_files: List[str] = []
self._account_id: str = ""
self._region: str = ""
def __str__(self) -> str:
return self._print_format()
def __repr__(self) -> str:
return self._print_format()
def _print_format(self) -> str:
return (f"ConfigFileDirectory:{self._config_directory},ConfigFiles:{self._config_files}"
f"AccountId:{self._account_id},Region:{self._region}")
@property
def config_directory(self) -> str:
return self._config_directory
@config_directory.setter
def config_directory(self, new_config_directory: str) -> None:
if file_utils.check_path_exists(new_config_directory):
self._config_directory = new_config_directory
else:
raise FileNotFoundError(error_messages.FILE_NOT_FOUND_ERROR_MESSAGE.format(new_config_directory))
@property
def config_files(self) -> List[str]:
return self._config_files
@config_files.setter
def config_files(self, new_config_files: List[str]) -> None:
self._config_files.clear()
self._config_files.extend(new_config_files)
@property
def account_id(self) -> str:
return self._account_id
@account_id.setter
def account_id(self, new_account_id: str) -> None:
self._account_id = new_account_id
@property
def region(self) -> str:
return self._region
@region.setter
def region(self, new_region: str) -> None:
self._region = new_region
class ConfigurationBuilder(object):
"""
The ConfigurationBuilder class provides a builder pattern for Configuration
"""
def __init__(self) -> None:
self._configuration: Configuration = Configuration()
def build(self) -> Configuration:
configuration: Configuration = self._configuration
self.reset()
return configuration
def build_account_id(self, account_id_value: str) -> ConfigurationBuilder:
self._configuration.account_id = account_id_value
return self
def build_config_files(self, config_files_value: List[str]) -> ConfigurationBuilder:
self._configuration.config_files = config_files_value
return self
def build_config_directory(self, config_directory_value: str) -> ConfigurationBuilder:
self._configuration.config_directory = config_directory_value
return self
def build_region(self, region_value: str) -> ConfigurationBuilder:
self._configuration.region = region_value
return self
def reset(self) -> None:
self._configuration = Configuration()