Skip to content

Instantly share code, notes, and snippets.

@sbz
Created April 23, 2014 09:10
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sbz/11208130 to your computer and use it in GitHub Desktop.
Save sbz/11208130 to your computer and use it in GitHub Desktop.
gitlab: list your groups and projects using api v3
#!/usr/bin/env python
import os
import requests
import subprocess
import sys
from pprint import pprint as pp
TOKEN = 'YOUR_TOKEN'
URL = 'YOUR_GITLAB_URL'
class GitLab(object):
def __init__(self, token=TOKEN, url=URL):
self.url = url
self.token = token
self.auth_cred = {'private_token': self.token}
def groups(self):
return self.get('groups')
def projects(self):
return self.get('projects')
def get(self, query):
r = requests.get("{0}/api/v3/{1}".format(self.url, query),
params=self.auth_cred)
return r.json()
def urls(self, kind='ssh'):
print "\n".join(
[f['{0}_url_to_repo'.format(kind)] for f in self.projects()])
def show(self):
print "[+] My Groups:\n"
for g in self.groups():
print g['name']
print
print "[+] My projects:\n"
for p in self.projects():
print p['name']
def main():
g = GitLab()
if ('-u' in sys.argv or '--urls' in sys.argv) and len(sys.argv)!=0:
g.urls()
else:
g.show()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment