97 lines
3.4 KiB
Python
Executable File
97 lines
3.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import argparse
|
|
import commands.login as cmd_login
|
|
import commands.projects as cmd_projects
|
|
import commands.stories as cmd_stories
|
|
import api.stories
|
|
|
|
from config import Config
|
|
from base32_crockford import decode as b32_decode
|
|
|
|
|
|
def start_story(args) -> None:
|
|
story_set_state(args.story, 'finished')
|
|
|
|
|
|
def finish_story(args) -> None:
|
|
story_set_state(args.story, 'finished')
|
|
|
|
|
|
def deliver_story(args) -> None:
|
|
story_set_state(args.story, 'delivered')
|
|
|
|
|
|
def accept_story(args) -> None:
|
|
story_set_state(args.story, 'accepted')
|
|
|
|
|
|
def story_set_state(args, state: str) -> None:
|
|
token = Config['user']['api_token']
|
|
story_id = b32_decode(args.story)
|
|
api.stories.put_story(token, story_id, current_state=state)
|
|
|
|
|
|
def parse_arguments() -> None:
|
|
parser = argparse.ArgumentParser()
|
|
parser.set_defaults(func=lambda _: parser.print_help())
|
|
commands = parser.add_subparsers(title='commands')
|
|
|
|
login_parser = commands.add_parser('login')
|
|
login_parser.set_defaults(func=cmd_login.login)
|
|
|
|
projects_parser = commands.add_parser('projects')
|
|
projects_parser.set_defaults(func=cmd_projects.list_projects)
|
|
|
|
projects_commands = projects_parser.add_subparsers(title='commands')
|
|
projects_list_parser = projects_commands.add_parser('list')
|
|
projects_list_parser.set_defaults(func=cmd_projects.list_projects)
|
|
|
|
projects_alias_parser = projects_commands.add_parser('alias')
|
|
projects_alias_parser.add_argument('code', type=str)
|
|
projects_alias_parser.add_argument('alias', type=str)
|
|
projects_alias_parser.set_defaults(func=cmd_projects.alias)
|
|
|
|
projects_rmalias_parser = projects_commands.add_parser('rmalias')
|
|
projects_rmalias_parser.add_argument('alias', type=str)
|
|
projects_rmalias_parser.set_defaults(func=cmd_projects.rmalias)
|
|
|
|
projects_info_parser = projects_commands.add_parser('info')
|
|
projects_info_parser.add_argument('alias', type=str)
|
|
projects_info_parser.set_defaults(func=cmd_projects.info)
|
|
|
|
stories_parser = commands.add_parser('stories', description='story stuff')
|
|
stories_parser.set_defaults(func=cmd_stories.stories)
|
|
stories_parser.add_argument('project', type=str)
|
|
stories_parser.add_argument('story', type=str, nargs='?', default=None)
|
|
stories_parser.add_argument('--scope', type=str, default='current')
|
|
stories_parser.add_argument('--hide-accepted', nargs='?', type=bool,
|
|
const=True, default=False)
|
|
|
|
story_start_parser = commands.add_parser('start')
|
|
story_start_parser.set_defaults(
|
|
func=lambda args: story_set_state(args, 'started'))
|
|
story_start_parser.add_argument('story', type=str)
|
|
|
|
story_finish_parser = commands.add_parser('finish')
|
|
story_finish_parser.set_defaults(
|
|
func=lambda args: story_set_state(args, 'finished'))
|
|
story_finish_parser.add_argument('story', type=str)
|
|
|
|
story_deliver_parser = commands.add_parser('deliver')
|
|
story_deliver_parser.set_defaults(
|
|
func=lambda args: story_set_state(args, 'delivered'))
|
|
story_deliver_parser.add_argument('story', type=str)
|
|
|
|
story_accept_parser = commands.add_parser('accept')
|
|
story_accept_parser.set_defaults(
|
|
func=lambda args: story_set_state(args, 'accepted'))
|
|
story_accept_parser.add_argument('story', type=str)
|
|
|
|
args = parser.parse_args()
|
|
args.func(args)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
Config.read()
|
|
parse_arguments()
|