From 3a71f85301e1c70781244dc75dc5f055a948def1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85ke=20Forslund?= Date: Mon, 24 Apr 2017 18:38:35 +0200 Subject: [PATCH] Replace load_settings() with a settings property settings are now loaded and created when required and not directly at load of skill. --- mycroft/skills/core.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mycroft/skills/core.py b/mycroft/skills/core.py index b44655e2c9..d8f1b3e45b 100644 --- a/mycroft/skills/core.py +++ b/mycroft/skills/core.py @@ -105,8 +105,8 @@ def load_skill(skill_descriptor, emitter): # v2 skills framework skill = skill_module.create_skill() skill.bind(emitter) + skill._dir = dirname(skill_descriptor['info'][1]) skill.load_data_files(dirname(skill_descriptor['info'][1])) - skill.load_settings(dirname(skill_descriptor['info'][1]) + '/settings.json') skill.initialize() logger.info("Loaded " + skill_descriptor["name"]) return skill @@ -207,8 +207,14 @@ class MycroftSkill(object): def lang(self): return self.config_core.get('lang') - def load_settings(self, skill_path): - self.settings = SkillSettings(skill_path) + @property + def settings(self): + """ Load settings if not already loaded. """ + try: + return self._settings + except: + self._settings = SkillSettings(join(self._dir, 'settings.json')) + return self._settings def bind(self, emitter): if emitter: