Hello community,
here is the log from the commit of package python-msk for openSUSE:Factory checked in at 2019-07-31 14:29:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-msk (Old)
and /work/SRC/openSUSE:Factory/.python-msk.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-msk"
Wed Jul 31 14:29:19 2019 rev:4 rq:719835 version:0.3.13
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-msk/python-msk.changes 2018-11-29 22:58:58.535611779 +0100
+++ /work/SRC/openSUSE:Factory/.python-msk.new.4126/python-msk.changes 2019-07-31 14:29:27.222078719 +0200
@@ -1,0 +2,6 @@
+Tue Jul 23 13:59:17 UTC 2019 - Tomáš Chvátal
+
+- Update to 0.3.13:
+ * no upstream changelog
+
+-------------------------------------------------------------------
Old:
----
msk-0.3.12.tar.gz
New:
----
msk-0.3.13.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-msk.spec ++++++
--- /var/tmp/diff_new_pack.Dz9hvK/_old 2019-07-31 14:29:30.474076088 +0200
+++ /var/tmp/diff_new_pack.Dz9hvK/_new 2019-07-31 14:29:30.498076069 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-msk
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define skip_python2 1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-msk
-Version: 0.3.12
+Version: 0.3.13
Release: 0
Summary: Mycroft Skills Kit
License: Apache-2.0
++++++ msk-0.3.12.tar.gz -> msk-0.3.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/PKG-INFO new/msk-0.3.13/PKG-INFO
--- old/msk-0.3.12/PKG-INFO 2018-11-21 12:15:12.000000000 +0100
+++ new/msk-0.3.13/PKG-INFO 2019-05-24 07:58:10.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: msk
-Version: 0.3.12
+Version: 0.3.13
Summary: Mycroft Skills Kit
Home-page: https://github.com/MycroftAI/mycroft-skills-kit
Author: Mycroft AI
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/README.md new/msk-0.3.13/README.md
--- old/msk-0.3.12/README.md 2018-08-27 08:43:07.000000000 +0200
+++ new/msk-0.3.13/README.md 2019-05-23 10:13:56.000000000 +0200
@@ -27,8 +27,7 @@
```bash
msk create
msk create-test /opt/mycroft/skills/myskill
-msk upload /opt/mycroft/skills/myskill
-msk upgrade /opt/mycroft/skills/myskill
+msk submit /opt/mycroft/skills/myskill
```
### Creating a New Skill
@@ -42,21 +41,15 @@
[![msk-create-test](https://images2.imgbox.com/9c/c8/gLRS7xuL_o.gif)](https://asciinema.org/a/Ayzaj6QJbKGBfs2eIQWr11idH?speed=1.5)
-## Uploading New Skill
+## Submitting a new skill / Updating existing skill
-`msk upload /opt/mycroft/skills/myskill`:
+`msk submit /opt/mycroft/skills/myskill`:
-[![msk-upload](https://images2.imgbox.com/35/5d/BCVxUxuh_o.gif)](https://asciinema.org/a/Bp1sORVnmVz9wYjZXfempTPoO?speed=1.5)
-
-## Upgrading an Existing Skill
-
-```bash
-msk upgrade /opt/mycroft/skills/myskill
-```
+[![msk-submit](https://images2.imgbox.com/7a/5f/RcBxgLXc_o.gif)](https://asciinema.org/a/242108)
--or--
```bash
cd /opt/mycroft/skills/myskill
-msk upgrade .
+msk submit .
```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/__init__.py new/msk-0.3.13/msk/__init__.py
--- old/msk-0.3.12/msk/__init__.py 2018-11-21 12:10:51.000000000 +0100
+++ new/msk-0.3.13/msk/__init__.py 2019-05-23 14:47:27.000000000 +0200
@@ -19,4 +19,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-__version__ = '0.3.12' # Also update in setup.py
+__version__ = '0.3.13' # Also update in setup.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/actions/create.py new/msk-0.3.13/msk/actions/create.py
--- old/msk-0.3.12/msk/actions/create.py 2018-08-27 08:43:07.000000000 +0200
+++ new/msk-0.3.13/msk/actions/create.py 2019-05-23 14:46:17.000000000 +0200
@@ -23,7 +23,7 @@
import re
from argparse import ArgumentParser
-from git import Git
+from git import Git, GitCommandError
from github import GithubException
from github.Repository import Repository
from os import makedirs
@@ -33,26 +33,30 @@
from typing import Callable, Optional
from msk.console_action import ConsoleAction
-from msk.exceptions import GithubRepoExists
+from msk.exceptions import GithubRepoExists, UnrelatedGithubHistory
from msk.lazy import Lazy
from msk.util import ask_input, to_camel, ask_yes_no, ask_input_lines, \
print_error
-readme_template = '''## {title_name}
+readme_template = '''# <img src="https://raw.githack.com/FortAwesome/Font-Awesome/master/svgs/solid/robot.svg" card_color="#40DBB0" width="50" height="50" style="vertical-align:bottom"/> \
+{title_name}
{short_description}
-## Description
+## About
{long_description}
## Examples
{examples}
-
{credits}
+## Category
+**{category_primary}**
+{categories_other}
+## Tags
+{tags}
'''
credits_template = '''## Credits
{author}
-
'''
init_template = '''from mycroft import MycroftSkill, intent_file_handler
@@ -72,51 +76,35 @@
'''
-gitignore_template = '''*.pyc
+gitignore_template = '''__pycache__/
+*.qmlc
settings.json
'''
-settingsmeta_template = '''{{
- "name": "{capital_desc}",
- "skillMetadata": {{
- "sections": [
- {{
- "name": "Options << Name of section",
- "fields": [
- {{
- "name": "internal_python_variable_name",
- "type": "text",
- "label": "Setting Friendly Display Name",
- "value": "",
- "placeholder": "demo prompt in the input box"
- }}
- ]
- }},
- {{
- "name": "Login << Name of another section",
- "fields": [
- {{
- "type": "label",
- "label": "Just a little bit of extra info for the user to understand following settings"
- }},
- {{
- "name": "username",
- "type": "text",
- "label": "Username",
- "value": ""
- }},
- {{
- "name": "password",
- "type": "password",
- "label": "Password",
- "value": ""
- }}
- ]
- }}
- ]
- }}
-}}'''
+settingsmeta_template = '''name: {capital_desc}
+skillMetadata:
+ sections:
+ - name: Options << Name of section
+ fields:
+ - name: internal_python_variable_name
+ type: text
+ label: Setting Friendly Display Name
+ value: ""
+ placeholder: demo prompt in the input box
+ - name: Login << Name of another section
+ fields:
+ - type: label
+ label: Just a little bit of extra info for the user to understand following settings
+ - name: username
+ type: text
+ label: Username
+ value: ""
+ - name: password
+ type: password
+ label: Password
+ value: ""
+'''
class CreateAction(ConsoleAction):
@@ -158,7 +146,7 @@
path = Lazy(lambda s: join(s.msm.skills_dir, s.name + '-skill'))
git = Lazy(lambda s: Git(s.path))
short_description = Lazy(lambda s: ask_input(
- 'Enter a one line description for your skill (ie. Orders fresh pizzas from the store):',
+ 'Enter a one line description for your skill (ie. Orders fresh pizzas from the store):\n-',
).capitalize())
author = Lazy(lambda s: ask_input('Enter author:'))
intent_lines = Lazy(lambda s: [
@@ -180,12 +168,33 @@
long_description = Lazy(lambda s: '\n\n'.join(
ask_input_lines('Enter a long description:', '>')
).strip().capitalize())
+ category_options = [
+ 'Daily', 'Configuration', 'Entertainment', 'Information', 'IoT',
+ 'Music & Audio', 'Media', 'Productivity', 'Transport']
+ category_primary = Lazy(lambda s: ask_input(
+ '\nCategories define where the skill will display in the Marketplace. It must be one of the following: \n{}. \nEnter the primary category for your skill: \n-'.format(', '.join(s.category_options)),
+ lambda x: x in s.category_options
+ ))
+ categories_other = Lazy(lambda s: [
+ i.capitalize() for i in ask_input_lines(
+ 'Enter additional categories (optional):', '-'
+ )
+ ])
+ tags = Lazy(lambda s: [
+ i.capitalize() for i in ask_input_lines(
+ 'Enter tags to make it easier to search for your skill (optional):',
+ '-'
+ )
+ ])
readme = Lazy(lambda s: readme_template.format(
title_name=s.name.replace('-', ' ').title(),
short_description=s.short_description,
long_description=s.long_description,
- examples=''.join(' - "{}"\n'.format(i) for i in s.intent_lines),
- credits=credits_template.format(author=s.author)
+ examples=''.join('* "{}"\n'.format(i) for i in s.intent_lines),
+ credits=credits_template.format(author=s.author),
+ category_primary=s.category_primary,
+ categories_other=''.join('{}\n'.format(i) for i in s.categories_other),
+ tags=''.join('#{}\n'.format(i) for i in s.tags)
))
init_file = Lazy(lambda s: init_template.format(
class_name=to_camel(s.name.replace('-', '_')),
@@ -231,7 +240,7 @@
('__init__.py', lambda: self.init_file),
('README.md', lambda: self.readme),
('.gitignore', lambda: gitignore_template),
- ('settingsmeta.json', lambda: settingsmeta_template.format(
+ ('settingsmeta.yaml', lambda: settingsmeta_template.format(
capital_desc=self.name.replace('-', ' ').capitalize()
)),
('.git', lambda: git.init())
@@ -257,6 +266,39 @@
self.git.add('.')
self.git.commit(message='Initial commit')
+ def force_push(self, get_repo_name: Callable = None) -> Optional[Repository]:
+ if ask_yes_no(
+ 'Are you sure you want to overwrite the remote github repo? '
+ 'This cannot be undone and you will lose your commit '
+ 'history! (y/N)',
+ False):
+ repo_name = (get_repo_name and get_repo_name()) or (
+ self.name + '-skill')
+ repo = self.user.get_repo(repo_name)
+ self.git.push('origin', 'master', force=True)
+ print('Force pushed to GitHub repo:', repo.html_url)
+ return repo
+
+ def link_github_repo(self, get_repo_name: Callable = None) -> Optional[Repository]:
+ if 'origin' not in Git(self.path).remote().split('\n'):
+ if ask_yes_no(
+ 'Would you like to link an existing GitHub repo to it? (Y/n)',
+ True):
+ repo_name = (get_repo_name and get_repo_name()) or (
+ self.name + '-skill')
+ repo = self.user.get_repo(repo_name)
+ self.git.remote('add', 'origin', repo.html_url)
+ self.git.fetch()
+ try:
+ self.git.pull('origin', 'master')
+ except GitCommandError as e:
+ if e.status == 128:
+ raise UnrelatedGithubHistory(repo_name) from e
+ raise
+ self.git.push('origin', 'master', set_upstream=True)
+ print('Linked and pushed to GitHub repo:', repo.html_url)
+ return repo
+
def create_github_repo(self, get_repo_name: Callable = None) -> Optional[Repository]:
if 'origin' not in Git(self.path).remote().split('\n'):
if ask_yes_no('Would you like to create a GitHub repo for it? (Y/n)', True):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/actions/create_test.py new/msk-0.3.13/msk/actions/create_test.py
--- old/msk-0.3.12/msk/actions/create_test.py 2018-11-21 12:10:51.000000000 +0100
+++ new/msk-0.3.13/msk/actions/create_test.py 2019-05-23 10:13:56.000000000 +0200
@@ -78,12 +78,12 @@
"""
intent_regex = (
- r'''@intent_handler \( IntentBuilder \( ['"]['"] \)(('''
- r''' \. (optionally|require) \( ['"][a-zA-Z]+['"] \))*)\) \n'''
- r''' def ([a-z_]+)'''
+ r'''@(?:\\\n )*intent_handler (?:\n )*\( IntentBuilder \( ['"][^'"]*['"] \)((?: '''
+ r'''\. (?:optionally|require) \( ['"][a-zA-Z_]+['"] \))*)\) \n'''
+ r'''(?: \\\n)* def (?:\\\n )*([a-z_]+)'''
).replace(' ', r'[\s\n]*').replace(' ', r'\s*')
- parts_regex = r'''\. (require|optionally) \( ['"]([a-zA-Z]+)['"] \)'''.replace(' ', '\s*')
+ parts_regex = r'''\. (require|optionally) \( ['"]([a-zA-Z_]+)['"] \)'''.replace(' ', r'[\s\n]*').replace(' ', '\s*')
intent_recipe = Lazy(lambda s: s.intent_recipes[s.intent_name])
@Lazy
@@ -114,7 +114,7 @@
@Lazy
def intent_recipes(self) -> Dict[str, Dict[str, list]]:
return {
- match.group(4): self.extract_recipe(match.group(1))
+ match.group(2): self.extract_recipe(match.group(1))
for match in re.finditer(self.intent_regex, self.init_content)
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/actions/upgrade.py new/msk-0.3.13/msk/actions/upgrade.py
--- old/msk-0.3.12/msk/actions/upgrade.py 2018-11-21 12:10:51.000000000 +0100
+++ new/msk-0.3.13/msk/actions/upgrade.py 2019-05-23 10:13:56.000000000 +0200
@@ -31,7 +31,7 @@
from msk.util import skills_kit_footer, create_or_edit_pr
body_template = '''
-'This upgrades {skill_name} to include the following new commits:
+This upgrades {skill_name} to include the following new commits:
{commits}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/actions/upload.py new/msk-0.3.13/msk/actions/upload.py
--- old/msk-0.3.12/msk/actions/upload.py 2018-11-21 12:10:51.000000000 +0100
+++ new/msk-0.3.13/msk/actions/upload.py 2019-05-23 10:13:56.000000000 +0200
@@ -29,7 +29,8 @@
from msk.actions.create import CreateAction
from msk.console_action import ConsoleAction
-from msk.exceptions import MskException
+from msk.exceptions import MskException, NoGitRepository, \
+ UnrelatedGithubHistory, GithubRepoExists
from msk.lazy import Lazy
from msk.repo_action import SkillData
from msk.util import skills_kit_footer, \
@@ -74,11 +75,25 @@
creator.initialize_template({'.git', '.gitignore', 'README.md'})
self.git.add('README.md')
creator.commit_changes()
- skill_repo = creator.create_github_repo(lambda: input('Repo name:'))
+
+ try:
+ skill_repo = creator.create_github_repo(
+ lambda: input('Repo name:'))
+ except GithubRepoExists:
+ try:
+ print("A repository with that name already exists")
+ skill_repo = creator.link_github_repo(
+ lambda: input('Remote repo name:'))
+ except UnrelatedGithubHistory:
+ print("Repository history does not seem to be related")
+ skill_repo = creator.force_push(
+ lambda: input('Confirm repo name:'))
if skill_repo:
self.entry.url = skill_repo.html_url
self.entry.author = self.user.login
else:
+ if not self.entry.url:
+ raise NoGitRepository
skill_repo = self.github.get_repo(skill_repo_name(self.entry.url))
if not skill_repo.permissions.push:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/exceptions.py new/msk-0.3.13/msk/exceptions.py
--- old/msk-0.3.12/msk/exceptions.py 2018-08-27 08:43:07.000000000 +0200
+++ new/msk-0.3.13/msk/exceptions.py 2019-05-23 10:13:56.000000000 +0200
@@ -40,3 +40,26 @@
class PRModified(MskException):
pass
+
+
+class SkillNameTaken(GithubRepoExists):
+ """
+ raised when you try to submit a skill with an already taken unique name
+ """
+ pass
+
+
+class UnrelatedGithubHistory(GithubRepoExists):
+ """
+ raised when you try to update a remote with unrelated commit history
+ """
+ pass
+
+
+class NoGitRepository(MskException):
+ """
+ Raised when a skill cannot be updated because it does not belong to any
+ git repo
+ """
+ pass
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk/util.py new/msk-0.3.13/msk/util.py
--- old/msk-0.3.12/msk/util.py 2018-08-28 15:43:42.000000000 +0200
+++ new/msk-0.3.13/msk/util.py 2019-05-23 10:13:56.000000000 +0200
@@ -35,7 +35,7 @@
from typing import Optional
from msk import __version__
-from msk.exceptions import PRModified, MskException
+from msk.exceptions import PRModified, MskException, SkillNameTaken
ASKPASS = '''#!/usr/bin/env python3
import sys
@@ -161,7 +161,12 @@
raise PRModified('Not updating description since it was not autogenerated')
return pull
else:
- return skills_repo.create_pull(title, body, base=base, head=head)
+ try:
+ return skills_repo.create_pull(title, body, base=base, head=head)
+ except GithubException as e:
+ if e.status == 422:
+ raise SkillNameTaken(title) from e
+ raise
def to_camel(snake):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/msk.egg-info/PKG-INFO new/msk-0.3.13/msk.egg-info/PKG-INFO
--- old/msk-0.3.12/msk.egg-info/PKG-INFO 2018-11-21 12:15:12.000000000 +0100
+++ new/msk-0.3.13/msk.egg-info/PKG-INFO 2019-05-24 07:58:10.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: msk
-Version: 0.3.12
+Version: 0.3.13
Summary: Mycroft Skills Kit
Home-page: https://github.com/MycroftAI/mycroft-skills-kit
Author: Mycroft AI
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/msk-0.3.12/setup.py new/msk-0.3.13/setup.py
--- old/msk-0.3.12/setup.py 2018-11-21 12:10:51.000000000 +0100
+++ new/msk-0.3.13/setup.py 2019-05-23 14:46:30.000000000 +0200
@@ -23,7 +23,7 @@
setup(
name='msk',
- version='0.3.12', # Also update in msk/__init__.py
+ version='0.3.13', # Also update in msk/__init__.py
packages=['msk', 'msk.actions'],
install_requires=['GitPython', 'typing', 'msm>=0.5.13', 'pygithub'],
url='https://github.com/MycroftAI/mycroft-skills-kit',