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 7836700..67b65cc 100755 --- a/setup.py +++ b/setup.py @@ -1,38 +1,73 @@ #!/usr/bin/env python3 -import os from setuptools import setup +from os import path, walk -BASEDIR = os.path.abspath(os.path.dirname(__file__)) +URL = "https://github.com/OpenVoiceOS/skill-ovos-news" +SKILL_CLAZZ = "NewsSkill" # needs to match __init__.py class name +PYPI_NAME = "skill-news" # pip install PYPI_NAME + + +# 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 -PLUGIN_ENTRY_POINT = 'skill-news.jarbasai=skill_news:NewsSkill' -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 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 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 + + +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-news', - version='0.0.1', - description='ovos news skill plugin', - url='https://github.com/JarbasSkills/skill-news', + name=PYPI_NAME, + version=version, + description='mycroft/ovos news skill plugin', + long_description=long_description, + url=URL, author='JarbasAi', author_email='jarbasai@mailfence.com', license='Apache-2.0', - package_dir={"skill_news": ""}, - package_data={'skill_news': ['locale/*', 'ui/*', 'res/*']}, - packages=['skill_news'], + package_dir={SKILL_PKG: ""}, + package_data={SKILL_PKG: find_resource_files()}, + packages=[SKILL_PKG], include_package_data=True, - install_requires=required("requirements.txt"), + install_requires=get_requirements("requirements.txt"), keywords='ovos skill plugin', entry_points={'ovos.plugin.skill': PLUGIN_ENTRY_POINT} ) diff --git a/version.py b/version.py new file mode 100644 index 0000000..b8023d8 --- /dev/null +++ b/version.py @@ -0,0 +1 @@ +__version__ = '0.0.1'