Skip to content

Commit e58e111

Browse files
committed
fix: #3
1 parent 7b72042 commit e58e111

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

github2gitlab/main.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,11 @@ def __init__(self, args):
5858

5959
if not self.args.gitlab_repo:
6060
self.args.gitlab_repo = self.args.github_repo
61-
(self.args.gitlab_namespace,
62-
self.args.gitlab_name) = self.args.gitlab_repo.split('/')
61+
62+
repo_parts = self.args.gitlab_repo.split('/')
63+
self.args.gitlab_name = repo_parts.pop()
64+
self.args.gitlab_namespace = '/'.join(repo_parts)
65+
6366
self.args.gitlab_repo = parse.quote_plus(self.args.gitlab_repo)
6467

6568
self.github = {
@@ -75,6 +78,7 @@ def __init__(self, args):
7578
'host': self.args.gitlab_url,
7679
'name': self.args.gitlab_name,
7780
'namespace': self.args.gitlab_namespace,
81+
'group': None,
7882
'url': self.args.gitlab_url + "/api/v4",
7983
'repo': self.args.gitlab_repo,
8084
'token': self.args.gitlab_token,
@@ -89,6 +93,14 @@ def __init__(self, args):
8993
logging.getLogger("urllib3").setLevel(level)
9094
logging.getLogger('github2gitlab').setLevel(level)
9195

96+
g = self.gitlab
97+
url = g['url'] + "/groups"
98+
query = {'private_token': g['token'], 'all_available': 'true', 'per_page': 10000}
99+
groups = requests.get(url, params=query).json()
100+
matches = list(filter(lambda group: group['full_path'] == g['namespace'].lower(), groups))
101+
if any(matches):
102+
g['group_id'] = matches[0]['id']
103+
92104
self.tmpdir = "/tmp"
93105

94106
@staticmethod
@@ -130,6 +142,9 @@ def get_parser():
130142
parser.add_argument('--clean', action='store_const',
131143
const=True,
132144
help='Remove the repo after sync')
145+
parser.add_argument('--visibility',
146+
help='Visbility of created repos (public, internal, private)',
147+
default='public')
133148
return parser
134149

135150
@staticmethod
@@ -288,15 +303,21 @@ def add_project(self):
288303
g = self.gitlab
289304
url = g['url'] + "/projects/" + g['repo']
290305
query = {'private_token': g['token']}
306+
if g['group_id']:
307+
query['group_id'] = g['group_id']
308+
291309
if (requests.get(url, params=query).status_code == requests.codes.ok):
292310
log.debug("project " + url + " already exists")
293311
return None
294312
else:
295-
log.info("add project " + g['repo'])
296313
url = g['url'] + "/projects"
297-
query['public'] = 'true'
298-
query['namespace'] = g['namespace']
314+
query['visibility'] = self.args.visibility
299315
query['name'] = g['name']
316+
if g['group_id']:
317+
query['namespace_id'] = g['group_id']
318+
else:
319+
query['namespace'] = g['namespace']
320+
log.info("add project " + g['repo'])
300321
result = requests.post(url, params=query)
301322
if result.status_code != requests.codes.created:
302323
raise ValueError(result.text)

0 commit comments

Comments
 (0)