3535logger = 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