1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-17 17:42:20 +03:00

DRY-ed setting version info

Also removed some uneeded type ignores
This commit is contained in:
A_D 2021-07-01 12:27:15 +02:00
parent e11193110f
commit 67df2efc8a
No known key found for this signature in database
GPG Key ID: 4BE9EB7DF45076C4

View File

@ -182,9 +182,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
if journal_dir == '' or journal_dir is None: if journal_dir == '' or journal_dir is None:
journal_dir = config.default_journal_dir journal_dir = config.default_journal_dir
# TODO(A_D): this is ignored for type checking due to all the different types config.get returns logdir = expanduser(journal_dir)
# When that is refactored, remove the magic comment
logdir = expanduser(journal_dir) # type: ignore # config is weird
if not logdir or not isdir(logdir): if not logdir or not isdir(logdir):
logger.error(f'Journal Directory is invalid: "{logdir}"') logger.error(f'Journal Directory is invalid: "{logdir}"')
@ -201,11 +199,11 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
# Do this before setting up the observer in case the journal directory has gone away # Do this before setting up the observer in case the journal directory has gone away
try: # TODO: This should be replaced with something specific ONLY wrapping listdir try: # TODO: This should be replaced with something specific ONLY wrapping listdir
logfiles = sorted( logfiles = sorted(
(x for x in listdir(self.currentdir) if self._RE_LOGFILE.search(x)), # type: ignore # config is weird (x for x in listdir(self.currentdir) if self._RE_LOGFILE.search(x)),
key=lambda x: x.split('.')[1:] key=lambda x: x.split('.')[1:]
) )
self.logfile = join(self.currentdir, logfiles[-1]) if logfiles else None # type: ignore # config is weird self.logfile = join(self.currentdir, logfiles[-1]) if logfiles else None
except Exception: except Exception:
logger.exception('Failed to find latest logfile') logger.exception('Failed to find latest logfile')
@ -492,8 +490,6 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
event_type = entry['event'].lower() event_type = entry['event'].lower()
if event_type == 'fileheader': if event_type == 'fileheader':
self.live = False self.live = False
self.version = entry['gameversion']
self.is_beta = any(v in entry['gameversion'].lower() for v in ('alpha', 'beta'))
self.cmdr = None self.cmdr = None
self.mode = None self.mode = None
@ -508,21 +504,16 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
self.systemaddress = None self.systemaddress = None
self.started = None self.started = None
self.__init_state() self.__init_state()
# In self.state as well, as that's what plugins get
self.state['GameLanguage'] = entry['language'] # Do this AFTER __init_state() lest our nice new state entries be None
self.state['GameVersion'] = entry['gameversion'] self.populate_version_info(entry)
self.state['GameBuild'] = entry['build']
elif event_type == 'commander': elif event_type == 'commander':
self.live = True # First event in 3.0 self.live = True # First event in 3.0
elif event_type == 'loadgame': elif event_type == 'loadgame':
# Odyssey Release Update 5 # Odyssey Release Update 5
self.state['GameLanguage'] = entry.get('language', self.state['GameLanguage']) self.populate_version_info(entry, suppress=True)
self.state['GameVersion'] = entry.get('gameversion', self.state['GameVersion'])
self.state['GameBuild'] = entry.get('build', self.state['GameBuild'])
self.version = self.state['GameVersion'] # Update this just in case things above changed.
self.is_beta = any(v in str(self.version).lower() for v in ('alpha', 'beta'))
# alpha4 # alpha4
# Odyssey: bool # Odyssey: bool
@ -1583,6 +1574,22 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
logger.debug(f'Invalid journal entry:\n{line!r}\n', exc_info=ex) logger.debug(f'Invalid journal entry:\n{line!r}\n', exc_info=ex)
return {'event': None} return {'event': None}
def populate_version_info(self, entry: MutableMapping[str, str], suppress: bool = False):
"""
Update game version information stored locally.
:param entry: Either a Fileheader or LoadGame event
"""
try:
self.state['GameLanguage'] = entry['language']
self.state['GameVersion'] = entry['gameversion']
self.state['GameBuild'] = entry['build']
self.version = self.state['GameVersion']
self.is_beta = any(v in self.version.lower() for v in ('alpha', 'beta'))
except KeyError:
if not suppress:
raise
def backpack_set_empty(self): def backpack_set_empty(self):
"""Set the BackPack contents to be empty.""" """Set the BackPack contents to be empty."""
self.state['BackPack']['Component'] = defaultdict(int) self.state['BackPack']['Component'] = defaultdict(int)