Installation under Arch Linux wasn't working for many because the dependencies
hadn't been updated for Python 3. Mycroft would only work if all of the needed
components were already installed on the user's system.
Thanks to community member Chowbok for the help straightening this out!
The skill log is redirected to a string during loading and if the skill
fails to load the loading logs are outputed when the first test for the
skill is executed.
Allowing multiple dialog choices can help in cases where a skill has a number of dialog files that each can be triggered independently by the same intent. For example, the weather skill inquiry "will it rain" can trigger either a response when there is an upcoming rain and another if there's no rain in the near future.
```
"expected_dialog": ["dialog1", "dialog2"]
```
and
```
"expected_response": ["text 1", "text 2"]
```
is now possible. This will pass the test if a line from either dialog1 or dialog2 is matched. (or "text 1" or "text 2" is matched for "expected_response")
* Unify the command line experience across platforms
Interacting with Mycroft was slightly different on different platforms
(Mark 1, Github, Picroft), which resulted in confusion and the beginnings of a
documentation/support nightmare. This moves several of the common commands
into a mycroft-core/bin folder instead of being build in packaging or part
of the Picroft package only.
This required a small changes to the common scripts, in addition to adding
the new scripts. Here are details:
* dev_setup.sh
- Stubbed out a setup wizard (TODO)
- Jumped to latest version of pip (18.0)
- Set execution flags for new scripts
* start-mycroft.sh
- Allow auto-execution of dev_setup.sh
- De-sourced the stop-mycroft.sh calls (not needed)
- Add quotes to better handle paths with spaces
* stop-mycroft.sh
- Return exit code to show if a service was stopped or killed
- Extend the time to wait for a gently shutdown from 2 secs to 5
- Changed to say "messagebus.service" instead of just "service" to be more clear (the name "service" means nothing to users, but "bus does")
* venv-activate.sh
- Added help
- Added -q or --quiet mode
- Added toggled availability of 'mycroft-venv-activate' and 'mycroft-venv-deactivate' aliases. Only one is available at any given time.
New scripts:
* mycroft-cli-client: start up the CLI
* mycroft-help: shows hints on using mycroft
* mycroft-mic-test: runs the basic record/playback, playing nicely with a running Mycroft by stopping and restarting services as appropriate
* mycroft-pip: manage the venv via pip
* mycroft-say-to: send utterances, like a user spoke them
* mycroft-speak: speaks the given phrase using Mycroft
* mycroft-skill-testrunner: invoke the single-skill test runner
All of these scripts are easy to discover by typing "mycroft-" then
hitting the TAB key.
==== INSTALLER NOTES ====
* We no longer need to create mycroft-cli-client and mycroft-pip in the Debian packages.
* mycroft-core/bin should be added to the path
* Corrections after review
Several minor corrections, plus added wrappers for the 'msm' and 'msk'
utilities.
* Set executable flag on script files in bin/
The scripts in the bin/ folder needed to be changed to executable within
git to prevent looking dirty after dev_setup.sh has been run.
* Add executable flag to one more script
* Add cleanup if the skill loading fails
If a skill throws an exception in initialize the registered handlers
need to be removed. To cleanup this the skill shutdown procedure is
run.
* Don't try converse method on non-loaded skills
Checks if a valid skill instance is present before calling the converse method
to filter out skills that wasn't loaded.
* Mark unloaded skills as inactive in CLI
The test setup function will be run after the skill is loaded but before the testing starts.
This provides a place to setup things that is standard for all test cases.
* Use correct method to guess mime type
* Use the commands from mycroft.conf
- Remove hardcoded commands and use the ones from mycroft.util to handle
configurations.
- Improve error handling
The recent changes to support the 'locale' directory were incorrectly
joining the os.walk() path and filename, resulting in double-directories,
like "./vocab/en-us/./vocab/en-us/Something.voc"