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
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')