Skip to content

Commit

Permalink
feat(gitlab): add new provider for gitlab
Browse files Browse the repository at this point in the history
  • Loading branch information
ebesson committed Dec 27, 2018
1 parent 58db590 commit 8bd0126
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 4 deletions.
24 changes: 21 additions & 3 deletions gitsync/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from termcolor import cprint
from gitsync.providers.github_provider import GithubProvider
from gitsync.providers.gitlab_provider import GitlabProvider
from gitsync.providers.tuleap_provider import TuleapProvider

from gitsync.providers.file_provider import FileProvider
Expand All @@ -21,7 +22,7 @@ def parse_args():
'--provider',
dest='repository_provider',
default="file",
help='git-sync provider: github, tuleap, file (default)'
help='git-sync provider: gitlab, github, tuleap, file (default)'
)

parser.add_argument(
Expand All @@ -43,6 +44,18 @@ def parse_args():
help='Tuleap hostname'
)

parser.add_argument(
'--gitlab.url',
dest='gitlab_url',
help='Gitlab url'
)

parser.add_argument(
'--gitlab.token',
dest='gitlab_token',
help='Gitlab token'
)

parser.add_argument(
'--tuleap.username',
dest='tuleap_username',
Expand All @@ -63,12 +76,17 @@ def main():
args = parse_args()
repository_provider = FileProvider()

if args.repository_provider == 'gitlab':
gitlab_url = 'https://gitlab.com'
if args.gitlab_url:
gitlab_url = args.gitlab_url

repository_provider = GitlabProvider(gitlab_url, args.gitlab_token, args.workspace)

if args.repository_provider == 'github':
if args.github_username:
password = getpass.getpass('Your Github password:')
repository_provider = GithubProvider(args.github_username, password, args.workspace)
else:
raise ValueError("Unkown github username")

if args.repository_provider == 'tuleap':
if not args.tuleap_username:
Expand Down
26 changes: 26 additions & 0 deletions gitsync/providers/gitlab_provider.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
import gitlab

from gitsync.model.project import Project
from gitsync.provider import Provider


class GitlabProvider(Provider):

def __init__(self, url, token, working_directory):
super(Provider, self).__init__()
self.gitlab = gitlab.Gitlab(url=url, private_token=token)
self.working_directory = working_directory

def projects(self):
projects = []
for project in self.gitlab.projects.list(owned=True):
projects.append(Project(
{"name": "%s" % project.attributes['path'],
"url": project.attributes['http_url_to_repo'],
"path": "%s/%s" % (self.working_directory, project.attributes['path'])}))

return projects

def need_to_write_gitsync_file(self):
return True
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ GitPython>=1.0.2
termcolor>=1.1.0
PyYAML>=3.10
pygithub>=1.26.0
requests>=2.5.3
requests>=2.5.3
python-gitlab>=1.7.0

0 comments on commit 8bd0126

Please sign in to comment.