Merge pull request #2644 from forslund/feature/install-defaults
Always install default skills before initial loadpull/2654/head
commit
69a1c1d082
|
@ -226,6 +226,10 @@ class SkillManager(Thread):
|
||||||
"""Load skills and update periodically from disk and internet."""
|
"""Load skills and update periodically from disk and internet."""
|
||||||
self._remove_git_locks()
|
self._remove_git_locks()
|
||||||
self._connected_event.wait()
|
self._connected_event.wait()
|
||||||
|
if not self.skill_updater.defaults_installed():
|
||||||
|
LOG.info('Not all default skills are installed, '
|
||||||
|
'performing skill update...')
|
||||||
|
self.skill_updater.update_skills()
|
||||||
self._load_on_startup()
|
self._load_on_startup()
|
||||||
|
|
||||||
# Sync backend and skills.
|
# Sync backend and skills.
|
||||||
|
|
|
@ -31,6 +31,11 @@ ONE_HOUR = 3600
|
||||||
FIVE_MINUTES = 300 # number of seconds in a minute
|
FIVE_MINUTES = 300 # number of seconds in a minute
|
||||||
|
|
||||||
|
|
||||||
|
def skill_is_blacklisted(skill):
|
||||||
|
blacklist = Configuration.get()['skills']['blacklisted_skills']
|
||||||
|
return os.path.basename(skill.path) in blacklist or skill.name in blacklist
|
||||||
|
|
||||||
|
|
||||||
class SkillUpdater:
|
class SkillUpdater:
|
||||||
"""Class facilitating skill update / install actions.
|
"""Class facilitating skill update / install actions.
|
||||||
|
|
||||||
|
@ -219,6 +224,18 @@ class SkillUpdater:
|
||||||
raise
|
raise
|
||||||
self.installed_skills.add(skill.name)
|
self.installed_skills.add(skill.name)
|
||||||
|
|
||||||
|
def defaults_installed(self):
|
||||||
|
"""Check if all default skills are installed.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
True if all default skills are installed, else False.
|
||||||
|
"""
|
||||||
|
defaults = []
|
||||||
|
for skill in self.msm.default_skills.values():
|
||||||
|
if not skill_is_blacklisted(skill):
|
||||||
|
defaults.append(skill)
|
||||||
|
return all([skill.is_local for skill in defaults])
|
||||||
|
|
||||||
def _get_device_skill_state(self, skill_name):
|
def _get_device_skill_state(self, skill_name):
|
||||||
"""Get skill data structure from name."""
|
"""Get skill data structure from name."""
|
||||||
device_skill_state = {}
|
device_skill_state = {}
|
||||||
|
|
Loading…
Reference in New Issue