diff --git a/MANIFEST.in b/MANIFEST.in index 9c3f566..bb58308 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,4 +2,5 @@ recursive-include dialog * recursive-include vocab * recursive-include locale * recursive-include res * -recursive-include ui * \ No newline at end of file +recursive-include ui * +recursive-include skill * \ No newline at end of file diff --git a/setup.py b/setup.py index cc31bd5..2dd33e1 100755 --- a/setup.py +++ b/setup.py @@ -1,67 +1,73 @@ #!/usr/bin/env python3 from setuptools import setup import os +from os import walk, path +URL = "https://github.com/OpenVoiceOS/skill-ovos-naptime" +SKILL_CLAZZ = "NapTimeSkill" # needs to match __init__.py class name +PYPI_NAME = "ovos-skill-naptime" # pip install PYPI_NAME -BASEDIR = os.path.abspath(os.path.dirname(__file__)) +# below derived from github url to ensure standard skill_id +SKILL_AUTHOR, SKILL_NAME = URL.split(".com/")[-1].split("/") +SKILL_PKG = SKILL_NAME.lower().replace('-', '_') +PLUGIN_ENTRY_POINT = f'{SKILL_NAME.lower()}.{SKILL_AUTHOR.lower()}={SKILL_PKG}:{SKILL_CLAZZ}' +# skill_id=package_name:SkillClass -def get_version(): - """ Find the version of the package""" - version = None - version_file = os.path.join(BASEDIR, 'version.py') - major, minor, build, alpha = (None, None, None, None) - with open(version_file) as f: - for line in f: - if 'VERSION_MAJOR' in line: - major = line.split('=')[1].strip() - elif 'VERSION_MINOR' in line: - minor = line.split('=')[1].strip() - elif 'VERSION_BUILD' in line: - build = line.split('=')[1].strip() - elif 'VERSION_ALPHA' in line: - alpha = line.split('=')[1].strip() - if ((major and minor and build and alpha) or - '# END_VERSION_BLOCK' in line): - break - version = f"{major}.{minor}.{build}" - if alpha and int(alpha) > 0: - version += f"a{alpha}" - return version +def get_requirements(requirements_filename: str): + requirements_file = path.join(path.abspath(path.dirname(__file__)), + requirements_filename) + with open(requirements_file, 'r', encoding='utf-8') as r: + requirements = r.readlines() + requirements = [r.strip() for r in requirements if r.strip() + and not r.strip().startswith("#")] + if 'MYCROFT_LOOSE_REQUIREMENTS' in os.environ: + print('USING LOOSE REQUIREMENTS!') + requirements = [r.replace('==', '>=').replace('~=', '>=') for r in requirements] + return requirements -def required(requirements_file): - """ Read requirements file and remove comments and empty lines. """ - with open(os.path.join(BASEDIR, requirements_file), 'r') as f: - requirements = f.read().splitlines() - if 'MYCROFT_LOOSE_REQUIREMENTS' in os.environ: - print('USING LOOSE REQUIREMENTS!') - requirements = [r.replace('==', '>=').replace('~=', '>=') for r in requirements] - return [pkg for pkg in requirements - if pkg.strip() and not pkg.startswith("#")] +def find_resource_files(): + resource_base_dirs = ("locale", "ui", "vocab", "dialog", "regex", "skill") + base_dir = path.dirname(__file__) + package_data = ["*.json"] + for res in resource_base_dirs: + if path.isdir(path.join(base_dir, res)): + for (directory, _, files) in walk(path.join(base_dir, res)): + if files: + package_data.append( + path.join(directory.replace(base_dir, "").lstrip('/'), + '*')) + return package_data -# NOTE: if you want compatibility with mycroft-core you CAN NOT move __init__.py -# skills installed from source are git cloned and depend on a rigid structure -# skill_id=package_name:SkillClass -PLUGIN_ENTRY_POINT = 'ovos-skill-naptime.OpenVoiceOS=ovos_skill_naptime:NapTimeSkill' +with open("README.md", "r") as f: + long_description = f.read() + +with open("./version.py", "r", encoding="utf-8") as v: + for line in v.readlines(): + if line.startswith("__version__"): + if '"' in line: + version = line.split('"')[1] + else: + version = line.split("'")[1] setup( - # this is the package name that goes on pip - name='ovos-skill-naptime', - version=get_version(), - description='OVOS naptime skill plugin', - url='https://github.com/OpenVoiceOS/ovos-skill-naptime', + name=PYPI_NAME, + version=version, + description='ovos skill plugin', + long_description=long_description, + url=URL, author='JarbasAi', author_email='jarbasai@mailfence.com', license='Apache-2.0', - package_dir={"ovos_skill_naptime": ""}, - package_data={'ovos_skill_naptime': ["locale/*"]}, - packages=['ovos_skill_naptime'], - install_requires=required("requirements.txt"), + package_dir={SKILL_PKG: ""}, + package_data={SKILL_PKG: find_resource_files()}, + packages=[SKILL_PKG], include_package_data=True, + install_requires=get_requirements("requirements.txt"), keywords='ovos skill plugin', entry_points={'ovos.plugin.skill': PLUGIN_ENTRY_POINT} ) diff --git a/test/plugin_tests.py b/test/plugin_tests.py index 081f08c..fe9c521 100644 --- a/test/plugin_tests.py +++ b/test/plugin_tests.py @@ -6,7 +6,7 @@ class TestPlugin(unittest.TestCase): @classmethod def setUpClass(self): - self.skill_id = "ovos-skill-naptime.OpenVoiceOS" + self.skill_id = "skill-ovos-naptime.openvoiceos" def test_find_plugin(self): plugins = find_skill_plugins() diff --git a/test/unittests/test_skill_loading.py b/test/unittests/test_skill_loading.py index 4983869..3d1bbfa 100644 --- a/test/unittests/test_skill_loading.py +++ b/test/unittests/test_skill_loading.py @@ -6,7 +6,7 @@ from adapt.engine import IntentDeterminationEngine from adapt.intent import IntentBuilder -from ovos_skill_naptime import NapTimeSkill, create_skill +from skill_ovos_naptime import NapTimeSkill, create_skill from ovos_plugin_manager.skills import find_skill_plugins from ovos_utils.messagebus import FakeBus from mycroft.skills.skill_loader import PluginSkillLoader, SkillLoader @@ -15,7 +15,7 @@ class TestSkillLoading(unittest.TestCase): @classmethod def setUpClass(self): - self.skill_id = "ovos-skill-naptime.OpenVoiceOS" + self.skill_id = "skill-ovos-naptime.openvoiceos" self.path = dirname(dirname(dirname(__file__))) def test_from_class(self): diff --git a/version.py b/version.py index ee962b6..fc79d63 100644 --- a/version.py +++ b/version.py @@ -1,7 +1 @@ -# The following lines are replaced during the release process. -# START_VERSION_BLOCK -VERSION_MAJOR = 0 -VERSION_MINOR = 0 -VERSION_BUILD = 2 -VERSION_ALPHA = 1 -# END_VERSION_BLOCK +__version__ = '0.2.1'