Load the contents from the ini file

            Args:
                ini_file (str): The file from which the settings should be loaded

def load_ini(self, ini_file):
        """ Load the contents from the ini file

            Args:
                ini_file (str): The file from which the settings should be loaded

        """
        if ini_file and not os.path.exists(ini_file):
            self.log.critical(f"Settings file specified but not found. {ini_file}")
            sys.exit(1)
        if not ini_file:
            ini_file = f"{self.cwd}/settings.ini"
        if os.path.exists(ini_file):
            config = configparser.RawConfigParser(allow_no_value=True)
            config.read(ini_file)
            for key, value in self.spec.items():
                entry = None
                if value['type'] == str:
                    entry = config.get("settings", option=key.lower(), fallback=None)
                elif value['type'] == bool:
                    entry = config.getboolean("settings", option=key.lower(), fallback=None)
                elif value['type'] == int:
                    entry = config.getint("settings", option=key.lower(), fallback=None)
                elif value['type'] == float:
                    entry = config.getfloat("settings", option=key.lower(), fallback=None)
                elif value['type'] in [list, dict]:
                    entries = config.get("settings", option=key.lower(), fallback=None)
                    if entries:
                        try:
                            entry = json.loads(entries)
                        except json.decoder.JSONDecodeError as _err:  #pragma: no cover
                            self.log.critical(f"Error parsing json from ini file. {entries}")
                            sys.exit(1)
                if entry is not None:
                    setattr(self, key.upper(), entry)