diff --git a/commands/stories.py b/commands/stories.py index 327be19..3c2bffe 100644 --- a/commands/stories.py +++ b/commands/stories.py @@ -174,19 +174,32 @@ def _set_story_state(story: str, state: str) -> None: api.stories.put_story(token, story_id, current_state=state) +def _complete_projects(ctx: click.Context, args: List[str], incomplete: str) \ + -> List[str]: + return [alias for alias in Config['project_aliases'] + if alias.startswith(incomplete)] + @cli.command('stories') -@click.argument('project') +@click.argument( + 'project', type=click.STRING, autocompletion=_complete_projects) @click.argument('story', required=False) +@click.argument('action', required=False) @click.option('--scope', default='current') @click.option('--show-accepted/--hide-accepted', default=True) -@click.option('--set-state', type=click.Choice([ - 'planned', 'started', 'finished', 'delivered', 'rejected', 'accepted'])) +@click.option('--set-state', type=click.Choice(STATES)) @require_login -def stories(project: str, story: Optional[str], scope: str, - show_accepted: bool, set_state: str) -> None: +def stories(project: str, story: Optional[str], action: Optional[str], + scope: str, show_accepted: bool, set_state: str) -> None: if story is not None: + state_actions = 'start', 'finish', 'deliver', 'accept', 'reject' if set_state is not None: _set_story_state(story, set_state) + elif action is not None: + if action in state_actions: + _set_story_state(story, f"{action}ed") + if action == "comment": + # todo + pass stories_info(story) else: diff --git a/requirements.txt b/requirements.txt index 08fda7e..11cdd8a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,38 +1,8 @@ -click==6.7 appnope==0.1.0 astroid==1.6.1 autopep8==1.3.4 base32-crockford==0.3.0 -beeprint==2.4.7 -certifi==2018.1.18 -chardet==3.0.4 -decorator==4.2.1 -flake8==3.5.0 -idna==2.6 -ipython==6.2.1 -ipython-genutils==0.2.0 -isort==4.3.4 -jedi==0.11.1 -lazy-object-proxy==1.3.1 -mccabe==0.6.1 -mypy==0.570 -parso==0.1.1 -pexpect==4.4.0 -pickleshare==0.7.4 -prompt-toolkit==1.0.15 -ptyprocess==0.5.2 -pycodestyle==2.3.1 -pyflakes==1.6.0 -Pygments==2.2.0 -pylint==1.8.2 +click-fish==0.1.0 +click==7.0 requests==2.18.4 -rope==0.10.7 -simplegeneric==0.8.1 -six==1.11.0 tabulate==0.8.2 -traitlets==4.3.2 -typed-ast==1.1.0 -urllib3==1.22 -urwid==2.0.1 -wcwidth==0.1.7 -wrapt==1.10.11