Skip to content

Commit 0b68f5e

Browse files
committed
python/network/gitlab_projects: support enumerating projects for a given group
1 parent ebad23f commit 0b68f5e

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

python/network/gitlab_projects.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,15 @@
3535
logger = logging.getLogger(__name__)
3636

3737

38-
def list_gitlab_user_projects(gitlab_url, username):
38+
def list_gitlab_user_projects(gitlab_url, username, is_group):
3939
"""Use Gitlab's API to list the projects of a user
4040
4141
https://docs.gitlab.com/ee/api/projects.html#list-user-projects
4242
"""
43-
endpoint_url = '{}/api/v4/users/{}/projects'.format(gitlab_url, username)
43+
if is_group:
44+
endpoint_url = '{}/api/v4/groups/{}/projects'.format(gitlab_url, username)
45+
else:
46+
endpoint_url = '{}/api/v4/users/{}/projects'.format(gitlab_url, username)
4447
response = requests.get(endpoint_url, allow_redirects=False)
4548
if response.status_code != 200:
4649
raise ValueError("unsuccessful HTTP status code {}".format(response.status_code))
@@ -93,6 +96,8 @@ def main(argv=None):
9396
parser = argparse.ArgumentParser(description="List the gitlab projects of a user")
9497
parser.add_argument('user', metavar="USERNAME", type=str,
9598
help="username to list the projects from")
99+
parser.add_argument('-g', '--group', action='store_true',
100+
help="request projects from a group instead of a user")
96101
parser.add_argument('-c', '--clone', action='store_true',
97102
help="clone the projects")
98103
parser.add_argument('-j', '--json-out', metavar='OUTPUT_FILE', type=Path,
@@ -108,7 +113,7 @@ def main(argv=None):
108113
logging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.DEBUG)
109114

110115
try:
111-
projects = list_gitlab_user_projects(args.url, args.user)
116+
projects = list_gitlab_user_projects(args.url, args.user, args.group)
112117
except ValueError as exc:
113118
logger.error("Error: %s", exc)
114119
return 1
@@ -134,7 +139,7 @@ def main(argv=None):
134139
logger.warning("Unexpected URL %r for path %r", prj_url, prj_pathname)
135140
print("{} {} {}".format(prj_name, prj_pathname, prj_url))
136141
else:
137-
path_from_name = prj_name.lower()
142+
path_from_name = prj_name.lower().replace(' ', '-')
138143
if prj_pathname == path_from_name:
139144
print("{} {}".format(prj_name, prj_url))
140145
else:

0 commit comments

Comments
 (0)