Exemplo n.º 1
0
def sync():
    '''Push local issues, pull remote issues'''
    click.echo('listing issues...')
    base_url = settings['gitlab.url']
    token = settings['gitlab.token']
    project_name = settings['gitlab.project']
    cache_path = settings['gitlab.cache']
    cache = Database(cache_path)
    # Get local issues to avoid duplicate primary keys
    local_issues = set(id for (id, title) in cache.list_issues())
    repo = create_repository(base_url, token)
    for project in repo.projects:
        if project.name == project_name:
            for issue in repo.issues(project_id=project.id):
                if issue.id not in local_issues:
                    cache.insert_issue(issue.id, issue.title)
                    click.echo('New issue cached {0}'.format(issue.title))
            break
Exemplo n.º 2
0
def new():
    '''Create new issue'''
    # base_url = settings['gitlab.url']
    # token = settings['gitlab.token']
    # project_name = settings['gitlab.project']
    # repo = create_repository(base_url, token)
    cache_path = settings['gitlab.cache']
    cache = Database(cache_path)

    template = '''# Commented lines are ignored
#
# Example:
#
# This is title of issue
#
# This is longer description
#
'''
    result = click.edit(template)
    if result is not None:
        lines = [line for line in result.splitlines() if not is_comment(line)]
        if not lines:
            result = None

    if result is None:
        sys.stderr.write('Empty message found...\n')
        sys.exit(1)

    title = lines[0]
    description = ''

    if len(lines) >= 2:
        # Title
        # empty line
        # Long description
        description = '\n'.join(lines[2:])

    cache.insert_issue(None, title, description)
    click.echo('New issue added.')
    click.echo('Please `sync` now to push local issues to your remote')