diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 0000000..d4fa8be --- /dev/null +++ b/.coveragerc @@ -0,0 +1,2 @@ +[run] +relative_files = true \ No newline at end of file diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml index af534f8..8a12837 100644 --- a/.github/workflows/build_tests.yml +++ b/.github/workflows/build_tests.yml @@ -9,16 +9,11 @@ on: workflow_dispatch: jobs: - py_build_tests: - uses: neongeckocom/.github/.github/workflows/python_build_tests.yml@master - with: - test_manifest: true - manifest_ignored: "test/**,scripts/**,CHANGELOG.md" - pip_audit: + build_tests: strategy: max-parallel: 2 matrix: - python-version: ["3.10"] + python-version: ["3.10", "3.11"] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -26,14 +21,19 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - - name: Install skill + - name: Install Build Tools run: | - pip install . - - uses: pypa/gh-action-pip-audit@v1.0.7 - with: - # Ignore setuptools vulnerability we can't do much about - # Ignore numpy vulnerability affecting latest version for Py3.7 - ignore-vulns: | - GHSA-r9hx-vwmv-q579 - GHSA-fpfv-jqm9-f5jm - PYSEC-2022-43012 + python -m pip install build wheel uv + - name: Install System Dependencies + run: | + sudo apt-get update + sudo apt install python3-dev + - name: Build Source Packages + run: | + python setup.py sdist + - name: Build Distribution Packages + run: | + python setup.py bdist_wheel + - name: Install package + run: | + uv pip install --system . diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 0000000..62d26ac --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,36 @@ +# .github/workflows/coverage.yml +name: Post coverage comment + +on: + workflow_run: + workflows: ["Run Tests"] + types: + - completed + +jobs: + test: + name: Run tests & display coverage + runs-on: ubuntu-latest + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' + permissions: + # Gives the action the necessary permissions for publishing new + # comments in pull requests. + pull-requests: write + # Gives the action the necessary permissions for editing existing + # comments (to avoid publishing multiple comments in the same PR) + contents: write + # Gives the action the necessary permissions for looking up the + # workflow that launched this workflow, and download the related + # artifact that contains the comment to be published + actions: read + steps: + # DO NOT run actions/checkout here, for security reasons + # For details, refer to https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ + - name: Post comment + uses: py-cov-action/python-coverage-comment-action@v3 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_PR_RUN_ID: ${{ github.event.workflow_run.id }} + # Update those if you changed the default values: + # COMMENT_ARTIFACT_NAME: python-coverage-comment-action + # COMMENT_FILENAME: python-coverage-comment-action.txt \ No newline at end of file diff --git a/.github/workflows/gh_pages_coverage.yml b/.github/workflows/gh_pages_coverage.yml new file mode 100644 index 0000000..6cfff7d --- /dev/null +++ b/.github/workflows/gh_pages_coverage.yml @@ -0,0 +1,47 @@ +name: Publish Coverage to gh-pages + +on: + push: + branches: + - dev + workflow_dispatch: + +permissions: + contents: write # Required to push to gh-pages + +jobs: + test-and-publish-coverage: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt install python3-dev swig libssl-dev portaudio19-dev libpulse-dev libfann-dev + python -m pip install build wheel uv + uv pip install --system -r test/requirements.txt + + - name: Install repo + run: | + uv pip install --system . + + - name: Run tests and collect coverage + run: | + coverage run -m pytest test/ + coverage html + rm ./htmlcov/.gitignore + + - name: Deploy coverage report to GitHub Pages + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./htmlcov + publish_branch: gh-pages diff --git a/.github/workflows/publish_stable.yml b/.github/workflows/publish_stable.yml index 275e208..01b3ad2 100644 --- a/.github/workflows/publish_stable.yml +++ b/.github/workflows/publish_stable.yml @@ -10,7 +10,7 @@ jobs: secrets: inherit with: branch: 'master' - version_file: 'version.py' + version_file: 'ovos_skill_hello_world/version.py' setup_py: 'setup.py' publish_release: true diff --git a/.github/workflows/release_workflow.yml b/.github/workflows/release_workflow.yml index 8b32e76..c65cfc1 100644 --- a/.github/workflows/release_workflow.yml +++ b/.github/workflows/release_workflow.yml @@ -41,7 +41,7 @@ jobs: secrets: inherit with: branch: 'dev' - version_file: 'version.py' + version_file: 'ovos_skill_hello_world/version.py' setup_py: 'setup.py' update_changelog: true publish_prerelease: true diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml new file mode 100644 index 0000000..8b2e073 --- /dev/null +++ b/.github/workflows/unit_tests.yml @@ -0,0 +1,56 @@ +name: Run Tests +on: + pull_request: + branches: + - dev + push: + branches: + - dev + workflow_dispatch: + +jobs: + unit_tests: + runs-on: ubuntu-latest + permissions: + # Gives the action the necessary permissions for publishing new + # comments in pull requests. + pull-requests: write + # Gives the action the necessary permissions for pushing data to the + # python-coverage-comment-action branch, and for editing existing + # comments (to avoid publishing multiple comments in the same PR) + contents: write + timeout-minutes: 35 + steps: + - uses: actions/checkout@v4 + - name: Set up python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + - name: Install System Dependencies + run: | + sudo apt-get update + sudo apt install python3-dev swig libssl-dev portaudio19-dev libpulse-dev libfann-dev + python -m pip install build wheel uv + uv pip install --system -r test/requirements.txt + - name: Install repo + run: | + uv pip install --system . + + - name: Run tests + run: | + pytest --cov=ovos_skill_hello_world --cov-report xml test/ + + - name: Coverage comment + id: coverage_comment + uses: py-cov-action/python-coverage-comment-action@v3 + with: + GITHUB_TOKEN: ${{ github.token }} + + - name: Store Pull Request comment to be posted + uses: actions/upload-artifact@v4 + if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true' + with: + # If you use a different name, update COMMENT_ARTIFACT_NAME accordingly + name: python-coverage-comment-action + # If you use a different name, update COMMENT_FILENAME accordingly + path: python-coverage-comment-action.txt \ No newline at end of file diff --git a/MANIFEST.in b/MANIFEST.in index fb05bf3..c6180e5 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,2 @@ -recursive-include locale * +recursive-include ovos_skill_hello_world/locale * include *.txt \ No newline at end of file diff --git a/__init__.py b/ovos_skill_hello_world/__init__.py similarity index 100% rename from __init__.py rename to ovos_skill_hello_world/__init__.py diff --git a/locale/ca-es/dialog/hello.dialog b/ovos_skill_hello_world/locale/ca-es/dialog/hello.dialog similarity index 100% rename from locale/ca-es/dialog/hello.dialog rename to ovos_skill_hello_world/locale/ca-es/dialog/hello.dialog diff --git a/locale/ca-es/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/ca-es/dialog/hello.world.dialog similarity index 100% rename from locale/ca-es/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/ca-es/dialog/hello.world.dialog diff --git a/locale/ca-es/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/ca-es/dialog/how.are.you.dialog similarity index 100% rename from locale/ca-es/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/ca-es/dialog/how.are.you.dialog diff --git a/locale/ca-es/dialog/welcome.dialog b/ovos_skill_hello_world/locale/ca-es/dialog/welcome.dialog similarity index 100% rename from locale/ca-es/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/ca-es/dialog/welcome.dialog diff --git a/locale/ca-es/intents/Greetings.intent b/ovos_skill_hello_world/locale/ca-es/intents/Greetings.intent similarity index 100% rename from locale/ca-es/intents/Greetings.intent rename to ovos_skill_hello_world/locale/ca-es/intents/Greetings.intent diff --git a/locale/ca-es/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/ca-es/intents/HowAreYou.intent similarity index 100% rename from locale/ca-es/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/ca-es/intents/HowAreYou.intent diff --git a/locale/ca-es/skill.json b/ovos_skill_hello_world/locale/ca-es/skill.json similarity index 100% rename from locale/ca-es/skill.json rename to ovos_skill_hello_world/locale/ca-es/skill.json diff --git a/locale/ca-es/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/ca-es/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/ca-es/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/ca-es/vocab/HelloWorldKeyword.voc diff --git a/locale/ca-es/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/ca-es/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/ca-es/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/ca-es/vocab/ThankYouKeyword.voc diff --git a/locale/cs-cz/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/cs-cz/dialog/hello.world.dialog similarity index 100% rename from locale/cs-cz/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/cs-cz/dialog/hello.world.dialog diff --git a/locale/cs-cz/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/cs-cz/dialog/how.are.you.dialog similarity index 100% rename from locale/cs-cz/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/cs-cz/dialog/how.are.you.dialog diff --git a/locale/cs-cz/dialog/welcome.dialog b/ovos_skill_hello_world/locale/cs-cz/dialog/welcome.dialog similarity index 100% rename from locale/cs-cz/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/cs-cz/dialog/welcome.dialog diff --git a/locale/cs-cz/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/cs-cz/intents/HowAreYou.intent similarity index 100% rename from locale/cs-cz/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/cs-cz/intents/HowAreYou.intent diff --git a/locale/cs-cz/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/cs-cz/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/cs-cz/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/cs-cz/vocab/HelloWorldKeyword.voc diff --git a/locale/cs-cz/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/cs-cz/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/cs-cz/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/cs-cz/vocab/ThankYouKeyword.voc diff --git a/locale/da-dk/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/da-dk/dialog/hello.world.dialog similarity index 100% rename from locale/da-dk/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/da-dk/dialog/hello.world.dialog diff --git a/locale/da-dk/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/da-dk/dialog/how.are.you.dialog similarity index 100% rename from locale/da-dk/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/da-dk/dialog/how.are.you.dialog diff --git a/locale/da-dk/dialog/welcome.dialog b/ovos_skill_hello_world/locale/da-dk/dialog/welcome.dialog similarity index 100% rename from locale/da-dk/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/da-dk/dialog/welcome.dialog diff --git a/locale/da-dk/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/da-dk/intents/HowAreYou.intent similarity index 100% rename from locale/da-dk/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/da-dk/intents/HowAreYou.intent diff --git a/locale/da-dk/skill.json b/ovos_skill_hello_world/locale/da-dk/skill.json similarity index 100% rename from locale/da-dk/skill.json rename to ovos_skill_hello_world/locale/da-dk/skill.json diff --git a/locale/da-dk/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/da-dk/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/da-dk/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/da-dk/vocab/HelloWorldKeyword.voc diff --git a/locale/da-dk/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/da-dk/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/da-dk/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/da-dk/vocab/ThankYouKeyword.voc diff --git a/locale/de-de/dialog/hello.dialog b/ovos_skill_hello_world/locale/de-de/dialog/hello.dialog similarity index 100% rename from locale/de-de/dialog/hello.dialog rename to ovos_skill_hello_world/locale/de-de/dialog/hello.dialog diff --git a/locale/de-de/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/de-de/dialog/hello.world.dialog similarity index 100% rename from locale/de-de/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/de-de/dialog/hello.world.dialog diff --git a/locale/de-de/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/de-de/dialog/how.are.you.dialog similarity index 100% rename from locale/de-de/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/de-de/dialog/how.are.you.dialog diff --git a/locale/de-de/dialog/welcome.dialog b/ovos_skill_hello_world/locale/de-de/dialog/welcome.dialog similarity index 100% rename from locale/de-de/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/de-de/dialog/welcome.dialog diff --git a/locale/de-de/intents/Greetings.intent b/ovos_skill_hello_world/locale/de-de/intents/Greetings.intent similarity index 100% rename from locale/de-de/intents/Greetings.intent rename to ovos_skill_hello_world/locale/de-de/intents/Greetings.intent diff --git a/locale/de-de/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/de-de/intents/HowAreYou.intent similarity index 100% rename from locale/de-de/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/de-de/intents/HowAreYou.intent diff --git a/locale/de-de/skill.json b/ovos_skill_hello_world/locale/de-de/skill.json similarity index 100% rename from locale/de-de/skill.json rename to ovos_skill_hello_world/locale/de-de/skill.json diff --git a/locale/de-de/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/de-de/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/de-de/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/de-de/vocab/HelloWorldKeyword.voc diff --git a/locale/de-de/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/de-de/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/de-de/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/de-de/vocab/ThankYouKeyword.voc diff --git a/locale/el-gr/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/el-gr/dialog/hello.world.dialog similarity index 100% rename from locale/el-gr/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/el-gr/dialog/hello.world.dialog diff --git a/locale/el-gr/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/el-gr/dialog/how.are.you.dialog similarity index 100% rename from locale/el-gr/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/el-gr/dialog/how.are.you.dialog diff --git a/locale/el-gr/dialog/welcome.dialog b/ovos_skill_hello_world/locale/el-gr/dialog/welcome.dialog similarity index 100% rename from locale/el-gr/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/el-gr/dialog/welcome.dialog diff --git a/locale/el-gr/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/el-gr/intents/HowAreYou.intent similarity index 100% rename from locale/el-gr/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/el-gr/intents/HowAreYou.intent diff --git a/locale/el-gr/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/el-gr/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/el-gr/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/el-gr/vocab/HelloWorldKeyword.voc diff --git a/locale/el-gr/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/el-gr/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/el-gr/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/el-gr/vocab/ThankYouKeyword.voc diff --git a/locale/en-us/dialog/hello.dialog b/ovos_skill_hello_world/locale/en-us/dialog/hello.dialog similarity index 100% rename from locale/en-us/dialog/hello.dialog rename to ovos_skill_hello_world/locale/en-us/dialog/hello.dialog diff --git a/locale/en-us/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/en-us/dialog/hello.world.dialog similarity index 100% rename from locale/en-us/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/en-us/dialog/hello.world.dialog diff --git a/locale/en-us/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/en-us/dialog/how.are.you.dialog similarity index 100% rename from locale/en-us/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/en-us/dialog/how.are.you.dialog diff --git a/locale/en-us/dialog/welcome.dialog b/ovos_skill_hello_world/locale/en-us/dialog/welcome.dialog similarity index 100% rename from locale/en-us/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/en-us/dialog/welcome.dialog diff --git a/locale/en-us/intents/Greetings.intent b/ovos_skill_hello_world/locale/en-us/intents/Greetings.intent similarity index 91% rename from locale/en-us/intents/Greetings.intent rename to ovos_skill_hello_world/locale/en-us/intents/Greetings.intent index 43f376e..d918625 100644 --- a/locale/en-us/intents/Greetings.intent +++ b/ovos_skill_hello_world/locale/en-us/intents/Greetings.intent @@ -13,7 +13,6 @@ hi hi there hiya howdy -how’s it going long time no see nice to see you sup diff --git a/locale/en-us/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/en-us/intents/HowAreYou.intent similarity index 60% rename from locale/en-us/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/en-us/intents/HowAreYou.intent index 461d9a1..d615239 100644 --- a/locale/en-us/intents/HowAreYou.intent +++ b/ovos_skill_hello_world/locale/en-us/intents/HowAreYou.intent @@ -1,4 +1,5 @@ how are you how are you doing how has your day been -how have you been \ No newline at end of file +how have you been +how’s it going \ No newline at end of file diff --git a/locale/en-us/skill.json b/ovos_skill_hello_world/locale/en-us/skill.json similarity index 100% rename from locale/en-us/skill.json rename to ovos_skill_hello_world/locale/en-us/skill.json diff --git a/locale/en-us/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/en-us/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/en-us/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/en-us/vocab/HelloWorldKeyword.voc diff --git a/locale/en-us/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/en-us/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/en-us/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/en-us/vocab/ThankYouKeyword.voc diff --git a/locale/es-es/dialog/hello.dialog b/ovos_skill_hello_world/locale/es-es/dialog/hello.dialog similarity index 100% rename from locale/es-es/dialog/hello.dialog rename to ovos_skill_hello_world/locale/es-es/dialog/hello.dialog diff --git a/locale/es-es/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/es-es/dialog/hello.world.dialog similarity index 100% rename from locale/es-es/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/es-es/dialog/hello.world.dialog diff --git a/locale/es-es/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/es-es/dialog/how.are.you.dialog similarity index 100% rename from locale/es-es/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/es-es/dialog/how.are.you.dialog diff --git a/locale/es-es/dialog/welcome.dialog b/ovos_skill_hello_world/locale/es-es/dialog/welcome.dialog similarity index 100% rename from locale/es-es/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/es-es/dialog/welcome.dialog diff --git a/locale/es-es/intents/Greetings.intent b/ovos_skill_hello_world/locale/es-es/intents/Greetings.intent similarity index 100% rename from locale/es-es/intents/Greetings.intent rename to ovos_skill_hello_world/locale/es-es/intents/Greetings.intent diff --git a/locale/es-es/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/es-es/intents/HowAreYou.intent similarity index 100% rename from locale/es-es/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/es-es/intents/HowAreYou.intent diff --git a/locale/es-es/skill.json b/ovos_skill_hello_world/locale/es-es/skill.json similarity index 100% rename from locale/es-es/skill.json rename to ovos_skill_hello_world/locale/es-es/skill.json diff --git a/locale/es-es/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/es-es/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/es-es/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/es-es/vocab/HelloWorldKeyword.voc diff --git a/locale/es-es/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/es-es/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/es-es/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/es-es/vocab/ThankYouKeyword.voc diff --git a/locale/eu-eu/dialog/hello.dialog b/ovos_skill_hello_world/locale/eu-eu/dialog/hello.dialog similarity index 100% rename from locale/eu-eu/dialog/hello.dialog rename to ovos_skill_hello_world/locale/eu-eu/dialog/hello.dialog diff --git a/locale/eu-eu/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/eu-eu/dialog/hello.world.dialog similarity index 100% rename from locale/eu-eu/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/eu-eu/dialog/hello.world.dialog diff --git a/locale/eu-eu/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/eu-eu/dialog/how.are.you.dialog similarity index 100% rename from locale/eu-eu/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/eu-eu/dialog/how.are.you.dialog diff --git a/locale/eu-eu/dialog/welcome.dialog b/ovos_skill_hello_world/locale/eu-eu/dialog/welcome.dialog similarity index 100% rename from locale/eu-eu/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/eu-eu/dialog/welcome.dialog diff --git a/locale/eu-eu/intents/Greetings.intent b/ovos_skill_hello_world/locale/eu-eu/intents/Greetings.intent similarity index 100% rename from locale/eu-eu/intents/Greetings.intent rename to ovos_skill_hello_world/locale/eu-eu/intents/Greetings.intent diff --git a/locale/eu-eu/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/eu-eu/intents/HowAreYou.intent similarity index 100% rename from locale/eu-eu/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/eu-eu/intents/HowAreYou.intent diff --git a/locale/eu-eu/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/eu-eu/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/eu-eu/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/eu-eu/vocab/HelloWorldKeyword.voc diff --git a/locale/eu-eu/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/eu-eu/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/eu-eu/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/eu-eu/vocab/ThankYouKeyword.voc diff --git a/locale/fa-ir/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/fa-ir/dialog/hello.world.dialog similarity index 100% rename from locale/fa-ir/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/fa-ir/dialog/hello.world.dialog diff --git a/locale/fa-ir/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/fa-ir/dialog/how.are.you.dialog similarity index 100% rename from locale/fa-ir/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/fa-ir/dialog/how.are.you.dialog diff --git a/locale/fa-ir/dialog/welcome.dialog b/ovos_skill_hello_world/locale/fa-ir/dialog/welcome.dialog similarity index 100% rename from locale/fa-ir/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/fa-ir/dialog/welcome.dialog diff --git a/locale/fa-ir/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/fa-ir/intents/HowAreYou.intent similarity index 100% rename from locale/fa-ir/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/fa-ir/intents/HowAreYou.intent diff --git a/locale/fa-ir/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/fa-ir/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/fa-ir/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/fa-ir/vocab/HelloWorldKeyword.voc diff --git a/locale/fa-ir/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/fa-ir/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/fa-ir/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/fa-ir/vocab/ThankYouKeyword.voc diff --git a/locale/fr-fr/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/fr-fr/dialog/hello.world.dialog similarity index 100% rename from locale/fr-fr/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/fr-fr/dialog/hello.world.dialog diff --git a/locale/fr-fr/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/fr-fr/dialog/how.are.you.dialog similarity index 100% rename from locale/fr-fr/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/fr-fr/dialog/how.are.you.dialog diff --git a/locale/fr-fr/dialog/welcome.dialog b/ovos_skill_hello_world/locale/fr-fr/dialog/welcome.dialog similarity index 100% rename from locale/fr-fr/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/fr-fr/dialog/welcome.dialog diff --git a/locale/fr-fr/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/fr-fr/intents/HowAreYou.intent similarity index 100% rename from locale/fr-fr/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/fr-fr/intents/HowAreYou.intent diff --git a/locale/fr-fr/skill.json b/ovos_skill_hello_world/locale/fr-fr/skill.json similarity index 100% rename from locale/fr-fr/skill.json rename to ovos_skill_hello_world/locale/fr-fr/skill.json diff --git a/locale/fr-fr/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/fr-fr/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/fr-fr/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/fr-fr/vocab/HelloWorldKeyword.voc diff --git a/locale/fr-fr/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/fr-fr/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/fr-fr/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/fr-fr/vocab/ThankYouKeyword.voc diff --git a/locale/gl-es/dialog/hello.dialog b/ovos_skill_hello_world/locale/gl-es/dialog/hello.dialog similarity index 100% rename from locale/gl-es/dialog/hello.dialog rename to ovos_skill_hello_world/locale/gl-es/dialog/hello.dialog diff --git a/locale/gl-es/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/gl-es/dialog/hello.world.dialog similarity index 100% rename from locale/gl-es/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/gl-es/dialog/hello.world.dialog diff --git a/locale/gl-es/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/gl-es/dialog/how.are.you.dialog similarity index 100% rename from locale/gl-es/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/gl-es/dialog/how.are.you.dialog diff --git a/locale/gl-es/dialog/welcome.dialog b/ovos_skill_hello_world/locale/gl-es/dialog/welcome.dialog similarity index 100% rename from locale/gl-es/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/gl-es/dialog/welcome.dialog diff --git a/locale/gl-es/intent/HowAreYou.intent b/ovos_skill_hello_world/locale/gl-es/intent/HowAreYou.intent similarity index 100% rename from locale/gl-es/intent/HowAreYou.intent rename to ovos_skill_hello_world/locale/gl-es/intent/HowAreYou.intent diff --git a/locale/gl-es/intents/Greetings.intent b/ovos_skill_hello_world/locale/gl-es/intents/Greetings.intent similarity index 100% rename from locale/gl-es/intents/Greetings.intent rename to ovos_skill_hello_world/locale/gl-es/intents/Greetings.intent diff --git a/locale/gl-es/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/gl-es/intents/HowAreYou.intent similarity index 100% rename from locale/gl-es/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/gl-es/intents/HowAreYou.intent diff --git a/locale/gl-es/skill.json b/ovos_skill_hello_world/locale/gl-es/skill.json similarity index 100% rename from locale/gl-es/skill.json rename to ovos_skill_hello_world/locale/gl-es/skill.json diff --git a/locale/gl-es/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/gl-es/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/gl-es/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/gl-es/vocab/HelloWorldKeyword.voc diff --git a/locale/gl-es/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/gl-es/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/gl-es/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/gl-es/vocab/ThankYouKeyword.voc diff --git a/locale/hu-hu/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/hu-hu/dialog/hello.world.dialog similarity index 100% rename from locale/hu-hu/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/hu-hu/dialog/hello.world.dialog diff --git a/locale/hu-hu/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/hu-hu/dialog/how.are.you.dialog similarity index 100% rename from locale/hu-hu/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/hu-hu/dialog/how.are.you.dialog diff --git a/locale/hu-hu/dialog/welcome.dialog b/ovos_skill_hello_world/locale/hu-hu/dialog/welcome.dialog similarity index 100% rename from locale/hu-hu/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/hu-hu/dialog/welcome.dialog diff --git a/locale/hu-hu/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/hu-hu/intents/HowAreYou.intent similarity index 100% rename from locale/hu-hu/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/hu-hu/intents/HowAreYou.intent diff --git a/locale/hu-hu/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/hu-hu/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/hu-hu/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/hu-hu/vocab/HelloWorldKeyword.voc diff --git a/locale/hu-hu/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/hu-hu/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/hu-hu/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/hu-hu/vocab/ThankYouKeyword.voc diff --git a/locale/it-it/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/it-it/dialog/hello.world.dialog similarity index 100% rename from locale/it-it/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/it-it/dialog/hello.world.dialog diff --git a/locale/it-it/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/it-it/dialog/how.are.you.dialog similarity index 100% rename from locale/it-it/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/it-it/dialog/how.are.you.dialog diff --git a/locale/it-it/dialog/welcome.dialog b/ovos_skill_hello_world/locale/it-it/dialog/welcome.dialog similarity index 100% rename from locale/it-it/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/it-it/dialog/welcome.dialog diff --git a/locale/it-it/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/it-it/intents/HowAreYou.intent similarity index 100% rename from locale/it-it/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/it-it/intents/HowAreYou.intent diff --git a/locale/it-it/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/it-it/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/it-it/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/it-it/vocab/HelloWorldKeyword.voc diff --git a/locale/it-it/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/it-it/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/it-it/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/it-it/vocab/ThankYouKeyword.voc diff --git a/locale/nl-nl/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/nl-nl/dialog/hello.world.dialog similarity index 100% rename from locale/nl-nl/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/nl-nl/dialog/hello.world.dialog diff --git a/locale/nl-nl/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/nl-nl/dialog/how.are.you.dialog similarity index 100% rename from locale/nl-nl/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/nl-nl/dialog/how.are.you.dialog diff --git a/locale/nl-nl/dialog/welcome.dialog b/ovos_skill_hello_world/locale/nl-nl/dialog/welcome.dialog similarity index 100% rename from locale/nl-nl/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/nl-nl/dialog/welcome.dialog diff --git a/locale/nl-nl/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/nl-nl/intents/HowAreYou.intent similarity index 100% rename from locale/nl-nl/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/nl-nl/intents/HowAreYou.intent diff --git a/locale/nl-nl/skill.json b/ovos_skill_hello_world/locale/nl-nl/skill.json similarity index 100% rename from locale/nl-nl/skill.json rename to ovos_skill_hello_world/locale/nl-nl/skill.json diff --git a/locale/nl-nl/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/nl-nl/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/nl-nl/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/nl-nl/vocab/HelloWorldKeyword.voc diff --git a/locale/nl-nl/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/nl-nl/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/nl-nl/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/nl-nl/vocab/ThankYouKeyword.voc diff --git a/locale/pl-pl/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/pl-pl/dialog/hello.world.dialog similarity index 100% rename from locale/pl-pl/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/pl-pl/dialog/hello.world.dialog diff --git a/locale/pl-pl/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/pl-pl/dialog/how.are.you.dialog similarity index 100% rename from locale/pl-pl/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/pl-pl/dialog/how.are.you.dialog diff --git a/locale/pl-pl/dialog/welcome.dialog b/ovos_skill_hello_world/locale/pl-pl/dialog/welcome.dialog similarity index 100% rename from locale/pl-pl/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/pl-pl/dialog/welcome.dialog diff --git a/locale/pl-pl/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/pl-pl/intents/HowAreYou.intent similarity index 100% rename from locale/pl-pl/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/pl-pl/intents/HowAreYou.intent diff --git a/locale/pl-pl/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/pl-pl/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/pl-pl/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/pl-pl/vocab/HelloWorldKeyword.voc diff --git a/locale/pl-pl/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/pl-pl/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/pl-pl/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/pl-pl/vocab/ThankYouKeyword.voc diff --git a/locale/pt-br/dialog/hello.dialog b/ovos_skill_hello_world/locale/pt-br/dialog/hello.dialog similarity index 100% rename from locale/pt-br/dialog/hello.dialog rename to ovos_skill_hello_world/locale/pt-br/dialog/hello.dialog diff --git a/locale/pt-br/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/pt-br/dialog/hello.world.dialog similarity index 100% rename from locale/pt-br/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/pt-br/dialog/hello.world.dialog diff --git a/locale/pt-br/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/pt-br/dialog/how.are.you.dialog similarity index 100% rename from locale/pt-br/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/pt-br/dialog/how.are.you.dialog diff --git a/locale/pt-br/dialog/welcome.dialog b/ovos_skill_hello_world/locale/pt-br/dialog/welcome.dialog similarity index 100% rename from locale/pt-br/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/pt-br/dialog/welcome.dialog diff --git a/locale/pt-br/intents/Greetings.intent b/ovos_skill_hello_world/locale/pt-br/intents/Greetings.intent similarity index 100% rename from locale/pt-br/intents/Greetings.intent rename to ovos_skill_hello_world/locale/pt-br/intents/Greetings.intent diff --git a/locale/pt-br/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/pt-br/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/pt-br/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/pt-br/vocab/HelloWorldKeyword.voc diff --git a/locale/pt-br/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/pt-br/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/pt-br/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/pt-br/vocab/ThankYouKeyword.voc diff --git a/locale/pt-pt/dialog/hello.dialog b/ovos_skill_hello_world/locale/pt-pt/dialog/hello.dialog similarity index 100% rename from locale/pt-pt/dialog/hello.dialog rename to ovos_skill_hello_world/locale/pt-pt/dialog/hello.dialog diff --git a/locale/pt-pt/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/pt-pt/dialog/hello.world.dialog similarity index 100% rename from locale/pt-pt/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/pt-pt/dialog/hello.world.dialog diff --git a/locale/pt-pt/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/pt-pt/dialog/how.are.you.dialog similarity index 100% rename from locale/pt-pt/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/pt-pt/dialog/how.are.you.dialog diff --git a/locale/pt-pt/dialog/welcome.dialog b/ovos_skill_hello_world/locale/pt-pt/dialog/welcome.dialog similarity index 100% rename from locale/pt-pt/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/pt-pt/dialog/welcome.dialog diff --git a/locale/pt-pt/intents/Greetings.intent b/ovos_skill_hello_world/locale/pt-pt/intents/Greetings.intent similarity index 100% rename from locale/pt-pt/intents/Greetings.intent rename to ovos_skill_hello_world/locale/pt-pt/intents/Greetings.intent diff --git a/locale/pt-pt/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/pt-pt/intents/HowAreYou.intent similarity index 100% rename from locale/pt-pt/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/pt-pt/intents/HowAreYou.intent diff --git a/locale/pt-pt/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/pt-pt/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/pt-pt/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/pt-pt/vocab/HelloWorldKeyword.voc diff --git a/locale/pt-pt/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/pt-pt/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/pt-pt/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/pt-pt/vocab/ThankYouKeyword.voc diff --git a/locale/ro-ro/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/ro-ro/dialog/hello.world.dialog similarity index 100% rename from locale/ro-ro/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/ro-ro/dialog/hello.world.dialog diff --git a/locale/ro-ro/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/ro-ro/dialog/how.are.you.dialog similarity index 100% rename from locale/ro-ro/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/ro-ro/dialog/how.are.you.dialog diff --git a/locale/ro-ro/dialog/welcome.dialog b/ovos_skill_hello_world/locale/ro-ro/dialog/welcome.dialog similarity index 100% rename from locale/ro-ro/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/ro-ro/dialog/welcome.dialog diff --git a/locale/ro-ro/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/ro-ro/intents/HowAreYou.intent similarity index 100% rename from locale/ro-ro/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/ro-ro/intents/HowAreYou.intent diff --git a/locale/ro-ro/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/ro-ro/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/ro-ro/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/ro-ro/vocab/HelloWorldKeyword.voc diff --git a/locale/ro-ro/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/ro-ro/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/ro-ro/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/ro-ro/vocab/ThankYouKeyword.voc diff --git a/locale/ru-ru/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/ru-ru/dialog/hello.world.dialog similarity index 100% rename from locale/ru-ru/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/ru-ru/dialog/hello.world.dialog diff --git a/locale/ru-ru/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/ru-ru/dialog/how.are.you.dialog similarity index 100% rename from locale/ru-ru/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/ru-ru/dialog/how.are.you.dialog diff --git a/locale/ru-ru/dialog/welcome.dialog b/ovos_skill_hello_world/locale/ru-ru/dialog/welcome.dialog similarity index 100% rename from locale/ru-ru/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/ru-ru/dialog/welcome.dialog diff --git a/locale/ru-ru/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/ru-ru/intents/HowAreYou.intent similarity index 100% rename from locale/ru-ru/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/ru-ru/intents/HowAreYou.intent diff --git a/locale/ru-ru/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/ru-ru/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/ru-ru/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/ru-ru/vocab/HelloWorldKeyword.voc diff --git a/locale/ru-ru/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/ru-ru/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/ru-ru/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/ru-ru/vocab/ThankYouKeyword.voc diff --git a/locale/sv-se/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/sv-se/dialog/hello.world.dialog similarity index 100% rename from locale/sv-se/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/sv-se/dialog/hello.world.dialog diff --git a/locale/sv-se/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/sv-se/dialog/how.are.you.dialog similarity index 100% rename from locale/sv-se/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/sv-se/dialog/how.are.you.dialog diff --git a/locale/sv-se/dialog/welcome.dialog b/ovos_skill_hello_world/locale/sv-se/dialog/welcome.dialog similarity index 100% rename from locale/sv-se/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/sv-se/dialog/welcome.dialog diff --git a/locale/sv-se/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/sv-se/intents/HowAreYou.intent similarity index 100% rename from locale/sv-se/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/sv-se/intents/HowAreYou.intent diff --git a/locale/sv-se/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/sv-se/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/sv-se/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/sv-se/vocab/HelloWorldKeyword.voc diff --git a/locale/sv-se/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/sv-se/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/sv-se/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/sv-se/vocab/ThankYouKeyword.voc diff --git a/locale/tr-tr/dialog/hello.world.dialog b/ovos_skill_hello_world/locale/tr-tr/dialog/hello.world.dialog similarity index 100% rename from locale/tr-tr/dialog/hello.world.dialog rename to ovos_skill_hello_world/locale/tr-tr/dialog/hello.world.dialog diff --git a/locale/tr-tr/dialog/how.are.you.dialog b/ovos_skill_hello_world/locale/tr-tr/dialog/how.are.you.dialog similarity index 100% rename from locale/tr-tr/dialog/how.are.you.dialog rename to ovos_skill_hello_world/locale/tr-tr/dialog/how.are.you.dialog diff --git a/locale/tr-tr/dialog/welcome.dialog b/ovos_skill_hello_world/locale/tr-tr/dialog/welcome.dialog similarity index 100% rename from locale/tr-tr/dialog/welcome.dialog rename to ovos_skill_hello_world/locale/tr-tr/dialog/welcome.dialog diff --git a/locale/tr-tr/intents/HowAreYou.intent b/ovos_skill_hello_world/locale/tr-tr/intents/HowAreYou.intent similarity index 100% rename from locale/tr-tr/intents/HowAreYou.intent rename to ovos_skill_hello_world/locale/tr-tr/intents/HowAreYou.intent diff --git a/locale/tr-tr/vocab/HelloWorldKeyword.voc b/ovos_skill_hello_world/locale/tr-tr/vocab/HelloWorldKeyword.voc similarity index 100% rename from locale/tr-tr/vocab/HelloWorldKeyword.voc rename to ovos_skill_hello_world/locale/tr-tr/vocab/HelloWorldKeyword.voc diff --git a/locale/tr-tr/vocab/ThankYouKeyword.voc b/ovos_skill_hello_world/locale/tr-tr/vocab/ThankYouKeyword.voc similarity index 100% rename from locale/tr-tr/vocab/ThankYouKeyword.voc rename to ovos_skill_hello_world/locale/tr-tr/vocab/ThankYouKeyword.voc diff --git a/version.py b/ovos_skill_hello_world/version.py similarity index 100% rename from version.py rename to ovos_skill_hello_world/version.py diff --git a/scripts/prepare_translations.py b/scripts/prepare_translations.py index 2132a0c..25f2979 100644 --- a/scripts/prepare_translations.py +++ b/scripts/prepare_translations.py @@ -1,14 +1,9 @@ -"""this script should run every time the contents of the locale folder change -except if PR originated from @gitlocalize-app -TODO - on commit to dev -""" - import json from os.path import dirname import os -locale = f"{dirname(dirname(__file__))}/locale" -tx = f"{dirname(dirname(__file__))}/translations" +locale = f"{dirname(dirname(__file__))}/ovos_skill_hello_world/locale" +tx = f"{dirname(dirname(__file__))}/ovos_skill_hello_world/translations" for lang in os.listdir(locale): diff --git a/scripts/sync_translations.py b/scripts/sync_translations.py index 30fc974..375f0fb 100644 --- a/scripts/sync_translations.py +++ b/scripts/sync_translations.py @@ -1,15 +1,11 @@ -"""this script should run in every PR originated from @gitlocalize-app -TODO - before PR merge -""" - import json from os.path import dirname import os from ovos_utils.bracket_expansion import expand_template from ovos_utils.list_utils import flatten_list, deduplicate_list -locale = f"{dirname(dirname(__file__))}/locale" -tx = f"{dirname(dirname(__file__))}/translations" +locale = f"{dirname(dirname(__file__))}/ovos_skill_hello_world/locale" +tx = f"{dirname(dirname(__file__))}/ovos_skill_hello_world/translations" for lang in os.listdir(tx): intents = f"{tx}/{lang}/intents.json" diff --git a/setup.py b/setup.py index a60e36f..55b215b 100755 --- a/setup.py +++ b/setup.py @@ -1,29 +1,30 @@ #!/usr/bin/env python3 import os -from setuptools import setup from os import walk, path +from setuptools import setup + URL = "https://github.com/OpenVoiceOS/ovos-skill-hello-world" SKILL_CLAZZ = "HelloWorldSkill" # needs to match __init__.py class name PYPI_NAME = "ovos-skill-hello-world" # pip install PYPI_NAME +SKILL_PKG = PYPI_NAME.lower().replace('-', '_') # import 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('-', '_') +SKILL_AUTHOR, SKILL_NAME = URL.split(".com/")[-1].split("/") # derived from github url to ensure standard skill_id PLUGIN_ENTRY_POINT = f'{SKILL_NAME.lower()}.{SKILL_AUTHOR.lower()}={SKILL_PKG}:{SKILL_CLAZZ}' def find_resource_files(): - resource_base_dirs = ("locale", ) - base_dir = path.dirname(__file__) + resource_base_dirs = ("locale",) + base_dir = path.join(os.path.dirname(__file__), SKILL_PKG) 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)): + res_dir = path.join(base_dir, res) + if path.isdir(res_dir): + for (directory, _, files) in walk(res_dir): if files: - package_data.append( - path.join(directory.replace(base_dir, "").lstrip('/'), - '*')) + relative_dir = directory.replace(base_dir + os.sep, "") + package_data.append(path.join(relative_dir, "*")) return package_data @@ -33,7 +34,7 @@ def find_resource_files(): def get_version(): """ Find the version of this skill""" - version_file = os.path.join(os.path.dirname(__file__), 'version.py') + version_file = os.path.join(os.path.dirname(__file__), SKILL_PKG, 'version.py') major, minor, build, alpha = (None, None, None, None) with open(version_file) as f: for line in f: @@ -58,15 +59,15 @@ def get_version(): setup( name=PYPI_NAME, version=get_version(), + description='OVOS hello world skill plugin', long_description=long_description, + long_description_content_type="text/markdown", url=URL, author=SKILL_AUTHOR, - description='OVOS hello world skill plugin', author_email='jarbasai@mailfence.com', license='Apache-2.0', - package_dir={SKILL_PKG: ""}, - package_data={SKILL_PKG: find_resource_files()}, packages=[SKILL_PKG], + package_data={SKILL_PKG: find_resource_files()}, include_package_data=True, keywords='ovos skill plugin', entry_points={'ovos.plugin.skill': PLUGIN_ENTRY_POINT} diff --git a/test/requirements.txt b/test/requirements.txt new file mode 100644 index 0000000..24c5585 --- /dev/null +++ b/test/requirements.txt @@ -0,0 +1,7 @@ +coveralls>=1.8.2 +flake8>=3.7.9 +pytest>=5.2.4 +pytest-cov>=2.8.1 +cov-core>=1.15.0 +ovoscope>=0.5.1,<1.0.0 +ovos-core[plugins,lgpl]>=2.0.0a1 \ No newline at end of file diff --git a/test/test_helloworld.py b/test/test_helloworld.py new file mode 100644 index 0000000..6337814 --- /dev/null +++ b/test/test_helloworld.py @@ -0,0 +1,160 @@ +from unittest import TestCase + +from ovos_bus_client.message import Message +from ovos_bus_client.session import Session +from ovos_utils.log import LOG +from ovoscope import End2EndTest, get_minicroft + + +class TestAdaptIntent(TestCase): + + def setUp(self): + LOG.set_level("DEBUG") + self.skill_id = "ovos-skill-hello-world.openvoiceos" + self.minicroft = get_minicroft([self.skill_id]) # reuse for speed, but beware if skills keeping internal state + + def tearDown(self): + if self.minicroft: + self.minicroft.stop() + LOG.set_level("CRITICAL") + + def test_adapt_match(self): + session = Session("123") + session.pipeline = ['ovos-adapt-pipeline-plugin-high'] + message = Message("recognizer_loop:utterance", + {"utterances": ["hello world"], "lang": "en-US"}, + {"session": session.serialize(), "source": "A", "destination": "B"}) + + test = End2EndTest( + minicroft=self.minicroft, + skill_ids=[self.skill_id], + source_message=message, + expected_messages=[ + message, + Message(f"{self.skill_id}.activate", + data={}, + context={"skill_id": self.skill_id}), + Message(f"{self.skill_id}:HelloWorldIntent", + data={"utterance": "hello world", "lang": "en-US"}, + context={"skill_id": self.skill_id}), + Message("mycroft.skill.handler.start", + data={"name": "HelloWorldSkill.handle_hello_world_intent"}, + context={"skill_id": self.skill_id}), + Message("speak", + data={"utterance": "Hello world", + "lang": "en-US", + "expect_response": False, + "meta": { + "dialog": "hello.world", + "data": {}, + "skill": self.skill_id + }}, + context={"skill_id": self.skill_id}), + Message("mycroft.skill.handler.complete", + data={"name": "HelloWorldSkill.handle_hello_world_intent"}, + context={"skill_id": self.skill_id}), + Message("ovos.utterance.handled", + data={}, + context={"skill_id": self.skill_id}), + ] + ) + + test.execute(timeout=10) + + def test_padatious_no_match(self): + session = Session("123") + session.pipeline = ["ovos-padatious-pipeline-plugin-high"] + message = Message("recognizer_loop:utterance", + {"utterances": ["hello world"], "lang": "en-US"}, + {"session": session.serialize(), "source": "A", "destination": "B"}) + + test = End2EndTest( + minicroft=self.minicroft, + skill_ids=[self.skill_id], + source_message=message, + expected_messages=[ + message, + Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}), + Message("complete_intent_failure", {}), + Message("ovos.utterance.handled", {}) + ] + ) + + test.execute(timeout=10) + + +class TestPadatiousIntent(TestCase): + + def setUp(self): + LOG.set_level("DEBUG") + self.skill_id = "ovos-skill-hello-world.openvoiceos" + self.minicroft = get_minicroft([self.skill_id]) + + def tearDown(self): + if self.minicroft: + self.minicroft.stop() + LOG.set_level("CRITICAL") + + def test_padatious_match(self): + session = Session("123") + session.pipeline = ["ovos-padatious-pipeline-plugin-high"] + message = Message("recognizer_loop:utterance", + {"utterances": ["good morning"], "lang": "en-US"}, + {"session": session.serialize(), "source": "A", "destination": "B"}) + + test = End2EndTest( + minicroft=self.minicroft, + skill_ids=[self.skill_id], + source_message=message, + expected_messages=[ + message, + Message(f"{self.skill_id}.activate", + data={}, + context={"skill_id": self.skill_id}), + Message(f"{self.skill_id}:Greetings.intent", + data={"utterance": "good morning", "lang": "en-US"}, + context={"skill_id": self.skill_id}), + Message("mycroft.skill.handler.start", + data={"name": "HelloWorldSkill.handle_greetings"}, + context={"skill_id": self.skill_id}), + Message("speak", + data={"lang": "en-US", + "expect_response": False, + "meta": { + "dialog": "hello", + "data": {}, + "skill": self.skill_id + }}, + context={"skill_id": self.skill_id}), + Message("mycroft.skill.handler.complete", + data={"name": "HelloWorldSkill.handle_greetings"}, + context={"skill_id": self.skill_id}), + Message("ovos.utterance.handled", + data={}, + context={"skill_id": self.skill_id}), + ] + ) + + test.execute(timeout=10) + + def test_adapt_no_match(self): + session = Session("123") + session.pipeline = ['ovos-adapt-pipeline-plugin-high'] + message = Message("recognizer_loop:utterance", + {"utterances": ["good morning"], "lang": "en-US"}, + {"session": session.serialize(), "source": "A", "destination": "B"}) + + test = End2EndTest( + minicroft=self.minicroft, + skill_ids=[self.skill_id], + source_message=message, + expected_messages=[ + message, + Message("mycroft.audio.play_sound", {"uri": "snd/error.mp3"}), + Message("complete_intent_failure", {}), + Message("ovos.utterance.handled", {}) + ] + ) + + test.execute(timeout=10) + diff --git a/translations/en-us/intents.json b/translations/en-us/intents.json index f7a2208..3dcc3a5 100644 --- a/translations/en-us/intents.json +++ b/translations/en-us/intents.json @@ -16,15 +16,15 @@ "sup", "greetings", "g'day", - "how’s it going", "nice to see you", "long time no see", "ahoy", "hello again" ], - "/intents/HowAreYou.intent": [ - "how are you (doing|)", - "how has your day been", - "how have you been" - ] + "/intents/HowAreYou.intent": [ + "how are you (doing|)", + "how has your day been", + "how have you been", + "how’s it going" + ] } \ No newline at end of file