Refactor priority skill loading
==== Tech Notes ==== - Set pairing as a priority skill by default - Move priority loading to separate functionpull/1092/head
parent
82b49c1397
commit
a100d2a6dc
|
@ -86,7 +86,7 @@
|
||||||
// blacklisted skills to not load
|
// blacklisted skills to not load
|
||||||
"blacklisted_skills": ["skill-media", "send_sms", "skill-wolfram-alpha"],
|
"blacklisted_skills": ["skill-media", "send_sms", "skill-wolfram-alpha"],
|
||||||
// priority skills to be loaded first
|
// priority skills to be loaded first
|
||||||
"priority_skills": []
|
"priority_skills": ["skill-pairing"]
|
||||||
},
|
},
|
||||||
|
|
||||||
// Address of the REMOTE server
|
// Address of the REMOTE server
|
||||||
|
|
|
@ -52,15 +52,13 @@ skills_manager_timer = None
|
||||||
|
|
||||||
skills_config = ConfigurationManager.instance().get("skills")
|
skills_config = ConfigurationManager.instance().get("skills")
|
||||||
BLACKLISTED_SKILLS = skills_config.get("blacklisted_skills", [])
|
BLACKLISTED_SKILLS = skills_config.get("blacklisted_skills", [])
|
||||||
|
PRIORITY_SKILLS = skills_config.get("priority_skills", [])
|
||||||
|
|
||||||
SKILLS_DIR = '/opt/mycroft/skills'
|
SKILLS_DIR = '/opt/mycroft/skills'
|
||||||
|
|
||||||
installer_config = ConfigurationManager.instance().get("SkillInstallerSkill")
|
installer_config = ConfigurationManager.instance().get("SkillInstallerSkill")
|
||||||
MSM_BIN = installer_config.get("path", join(MYCROFT_ROOT_PATH, 'msm', 'msm'))
|
MSM_BIN = installer_config.get("path", join(MYCROFT_ROOT_PATH, 'msm', 'msm'))
|
||||||
|
|
||||||
skills_config = ConfigurationManager.instance().get("skills")
|
|
||||||
PRIORITY_SKILLS = skills_config.get("priority_skills", [])
|
|
||||||
|
|
||||||
|
|
||||||
def connect():
|
def connect():
|
||||||
global ws
|
global ws
|
||||||
|
@ -211,6 +209,35 @@ def _get_last_modified_date(path):
|
||||||
return last_date
|
return last_date
|
||||||
|
|
||||||
|
|
||||||
|
def load_skill_list(skills_to_load):
|
||||||
|
"""
|
||||||
|
load list of specific skills.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
skills_to_load (list): list of skill directories to load
|
||||||
|
"""
|
||||||
|
if exists(SKILLS_DIR):
|
||||||
|
# checking skills dir and getting all priority skills there
|
||||||
|
skill_list = [folder for folder in filter(
|
||||||
|
lambda x: os.path.isdir(os.path.join(SKILLS_DIR, x)),
|
||||||
|
os.listdir(SKILLS_DIR)) if folder in skills_to_load]
|
||||||
|
for skill_folder in skill_list:
|
||||||
|
skill = {"id": hash(os.path.join(SKILLS_DIR, skill_folder))}
|
||||||
|
skill["path"] = os.path.join(SKILLS_DIR, skill_folder)
|
||||||
|
# checking if is a skill
|
||||||
|
if not MainModule + ".py" in os.listdir(skill["path"]):
|
||||||
|
continue
|
||||||
|
# getting the newest modified date of skill
|
||||||
|
last_mod = _get_last_modified_date(skill["path"])
|
||||||
|
skill["last_modified"] = last_mod
|
||||||
|
# loading skill
|
||||||
|
skill["loaded"] = True
|
||||||
|
skill["instance"] = load_skill(
|
||||||
|
create_skill_descriptor(skill["path"]),
|
||||||
|
ws, skill["id"])
|
||||||
|
loaded_skills[skill_folder] = skill
|
||||||
|
|
||||||
|
|
||||||
class WatchSkills(Thread):
|
class WatchSkills(Thread):
|
||||||
"""
|
"""
|
||||||
Thread function to reload skills when a change is detected.
|
Thread function to reload skills when a change is detected.
|
||||||
|
@ -225,27 +252,7 @@ class WatchSkills(Thread):
|
||||||
global ws, loaded_skills, last_modified_skill
|
global ws, loaded_skills, last_modified_skill
|
||||||
|
|
||||||
# Load priority skills first by order
|
# Load priority skills first by order
|
||||||
if exists(SKILLS_DIR):
|
load_skill_list(PRIORITY_SKILLS)
|
||||||
# checking skills dir and getting all priority skills there
|
|
||||||
list = [folder for folder in filter(
|
|
||||||
lambda x: os.path.isdir(os.path.join(SKILLS_DIR, x)),
|
|
||||||
os.listdir(SKILLS_DIR)) if folder in PRIORITY_SKILLS]
|
|
||||||
for skill_folder in list:
|
|
||||||
id_counter += 1
|
|
||||||
skill = {"id": id_counter}
|
|
||||||
skill["path"] = os.path.join(SKILLS_DIR, skill_folder)
|
|
||||||
# checking if is a skill
|
|
||||||
if not MainModule + ".py" in os.listdir(skill["path"]):
|
|
||||||
continue
|
|
||||||
# getting the newest modified date of skill
|
|
||||||
last_mod = _get_last_modified_date(skill["path"])
|
|
||||||
skill["last_modified"] = last_mod
|
|
||||||
# loading skill
|
|
||||||
skill["loaded"] = True
|
|
||||||
skill["instance"] = load_skill(
|
|
||||||
create_skill_descriptor(skill["path"]),
|
|
||||||
ws, skill["id"])
|
|
||||||
loaded_skills[skill_folder] = skill
|
|
||||||
|
|
||||||
# Scan the file folder that contains Skills. If a Skill is updated,
|
# Scan the file folder that contains Skills. If a Skill is updated,
|
||||||
# unload the existing version from memory and reload from the disk.
|
# unload the existing version from memory and reload from the disk.
|
||||||
|
|
Loading…
Reference in New Issue