Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.1:Update
python-msm
fix-skills-directories.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File fix-skills-directories.patch of Package python-msm
Index: msm-0.5.17/msm/configuration.py =================================================================== --- /dev/null +++ msm-0.5.17/msm/configuration.py @@ -0,0 +1,62 @@ + +# Copyright 2017 Mycroft AI Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from os.path import join, exists, isfile, expanduser +from .json_helper import load_commented_json + +SYSTEM_CONFIG = '/etc/mycroft/mycroft.conf' +USER_CONFIG = join(expanduser('~'), '.mycroft/mycroft.conf') + +class LocalConf(dict): + """ + Config dict from file. + """ + def __init__(self, path): + super(LocalConf, self).__init__() + if path: + self.path = path + self.load_local(path) + + def load_local(self, path): + """ + Load local json file into self. + + Args: + path (str): file to load + """ + if exists(path) and isfile(path): + try: + config = load_commented_json(path) + for key in config: + self.__setitem__(key, config[key]) + + except Exception as e: + print("Error loading configuration '{}'".format(path)) + print(repr(e)) + +def get_skills_configuration_value(key): + for config_file in (USER_CONFIG, SYSTEM_CONFIG): + config = LocalConf(config_file) + directory = config.get('skills').get(key) + return directory + + return None + +def get_skills_directory(): + return get_skills_configuration_value('directory') or "/opt/mycroft/skills" + +def get_skills_repo_directory(): + return get_skills_configuration_value('repo_directory') or "/opt/mycroft/.skills-repo" Index: msm-0.5.17/msm/mycroft_skills_manager.py =================================================================== --- msm-0.5.17.orig/msm/mycroft_skills_manager.py +++ msm-0.5.17/msm/mycroft_skills_manager.py @@ -30,6 +30,7 @@ from msm import GitException from typing import Dict, List from msm import GitException +from msm.configuration import get_skills_directory from msm.exceptions import (MsmException, SkillNotFound, MultipleSkillMatches, AlreadyInstalled) from msm.skill_entry import SkillEntry @@ -68,7 +69,7 @@ from msm import GitException class MycroftSkillsManager(object): SKILL_GROUPS = {'default', 'mycroft_mark_1', 'picroft', 'kde'} - DEFAULT_SKILLS_DIR = "/opt/mycroft/skills" + DEFAULT_SKILLS_DIR = get_skills_directory() def __init__(self, platform='default', skills_dir=None, repo=None, versioned=True): Index: msm-0.5.17/msm/json_helper.py =================================================================== --- /dev/null +++ msm-0.5.17/msm/json_helper.py @@ -0,0 +1,69 @@ +# Copyright 2017 Mycroft AI Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import json + + +def load_commented_json(filename): + """ Loads an JSON file, ignoring comments + + Supports a trivial extension to the JSON file format. Allow comments + to be embedded within the JSON, requiring that a comment be on an + independent line starting with '//' or '#'. + + NOTE: A file created with these style comments will break strict JSON + parsers. This is similar to but lighter-weight than "human json" + proposed at https://hjson.org + + Args: + filename (str): path to the commented JSON file + + Returns: + obj: decoded Python object + """ + with open(filename) as f: + contents = f.read() + + return json.loads(uncomment_json(contents)) + + +def uncomment_json(commented_json_str): + """ Removes comments from a JSON string. + + Supporting a trivial extension to the JSON format. Allow comments + to be embedded within the JSON, requiring that a comment be on an + independent line starting with '//' or '#'. + + Example... + { + // comment + 'name' : 'value' + } + + Args: + commented_json_str (str): a JSON string + + Returns: + str: uncommented, legal JSON + """ + lines = commented_json_str.splitlines() + # remove all comment lines, starting with // or # + nocomment = [] + for line in lines: + stripped = line.lstrip() + if stripped.startswith("//") or stripped.startswith("#"): + continue + nocomment.append(line) + + return " ".join(nocomment) Index: msm-0.5.17/msm/skill_repo.py =================================================================== --- msm-0.5.17.orig/msm/skill_repo.py +++ msm-0.5.17/msm/skill_repo.py @@ -29,6 +29,7 @@ from git.exc import GitCommandError from msm import git_to_msm_exceptions from msm.exceptions import MsmException from msm.util import Git +from msm.configuration import get_skills_repo_directory import logging LOG = logging.getLogger(__name__) @@ -36,7 +37,7 @@ LOG = logging.getLogger(__name__) class SkillRepo(object): def __init__(self, path=None, url=None, branch=None): - self.path = path or "/opt/mycroft/.skills-repo" + self.path = path or get_skills_repo_directory() self.url = url or "https://github.com/MycroftAI/mycroft-skills" self.branch = branch or "18.08" self.repo_info = {}
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor