Browse Source

more safeguards against not converted programs in the database

master
Nils 3 years ago
parent
commit
6ca627d705
  1. 3
      CHANGELOG
  2. 9
      engine/findprograms.py

3
CHANGELOG

@ -1,3 +1,6 @@
2020-15-01 0.2.1
Remove Nuitka as dependency. Build commands stay the same.
2020-12-05 0.2.0 2020-12-05 0.2.0
Fix crash from Qt/PyQt regression with Qt 5.15.2 Fix crash from Qt/PyQt regression with Qt 5.15.2
Install nsm-data manpage Install nsm-data manpage

9
engine/findprograms.py

@ -203,7 +203,7 @@ class SupportedProgramsDatabase(object):
def _exeToDesktopEntry(self, exe:str)->dict: def _exeToDesktopEntry(self, exe:str)->dict:
"""Assumes self.desktopEntries is up to date """Assumes self.desktopEntries is up to date
Convert one exe (not full path!) to one dict entry. """ Convert one exe (not full path!) to one dict entry. """
if exe in self.knownDesktopFiles: #Shortcut through internal database if exe in self.knownDesktopFiles and type(self.knownDesktopFiles[exe]) is dict : #Shortcut through internal database
entry = self.knownDesktopFiles[exe] entry = self.knownDesktopFiles[exe]
return entry return entry
else: #Reverse Search desktop files. else: #Reverse Search desktop files.
@ -211,7 +211,6 @@ class SupportedProgramsDatabase(object):
if "exec" in entry and exe.lower() in entry["exec"].lower(): if "exec" in entry and exe.lower() in entry["exec"].lower():
return entry return entry
#else: #Foor loop ended. Did not find any matching desktop file #else: #Foor loop ended. Did not find any matching desktop file
return None return None
def _build(self): def _build(self):
@ -224,8 +223,7 @@ class SupportedProgramsDatabase(object):
for exe, fullPath in self.executables: for exe, fullPath in self.executables:
self.progressHook(f"{fullPath}") self.progressHook(f"{fullPath}")
entry = self._exeToDesktopEntry(exe) entry = self._exeToDesktopEntry(exe)
if entry: #Found match! if entry and type(entry) is dict: #Found match!
assert type(entry) is dict, type(entry)
entry["agordejoFullPath"] = fullPath entry["agordejoFullPath"] = fullPath
#We don't want .desktop syntax like "qmidiarp %F" #We don't want .desktop syntax like "qmidiarp %F"
entry["agordejoExec"] = exe entry["agordejoExec"] = exe
@ -245,6 +243,9 @@ class SupportedProgramsDatabase(object):
leftovers.remove((exe,fullPath)) leftovers.remove((exe,fullPath))
except KeyError: except KeyError:
pass #Double entries like zyn-jack zyn-alsa etc. pass #Double entries like zyn-jack zyn-alsa etc.
elif entry and not type(entry) is dict:
#There is a strange bug I can't reproduce. At least catch it.
logger.error(f"Wrong entry type: {type(entry)} for {entry}")
for exe,fullPath in leftovers: for exe,fullPath in leftovers:
pseudoEntry = {"name": exe.title(), "agordejoExec":exe, "agordejoFullPath":fullPath} pseudoEntry = {"name": exe.title(), "agordejoExec":exe, "agordejoFullPath":fullPath}

Loading…
Cancel
Save