Skip to content
Snippets Groups Projects
Commit a66332e1 authored by kazix's avatar kazix
Browse files

added files

parent e1f26301
No related branches found
No related tags found
No related merge requests found
/gitlab-projects.html
/gitlab-projects.json
/.idea
/.idea/*
.env
\ No newline at end of file
main.py 0 → 100644
# from re import I
import gitlab
import requests
import json
from json2html import *
import argparse
import os
from dotenv import load_dotenv
parser = argparse.ArgumentParser(description="Get Project, License and Owners from gitlab")
parser.add_argument("--production", action='store_true', help="Use for Production")
parser.add_argument("--developer", action='store_true', help="Use for Developer")
args = parser.parse_args()
load_dotenv()
try:
if args.production:
token = os.getenv('PRODUCTION_TOKEN')
print('produkcyjny')
headers = {'PRIVATE-TOKEN': token}
gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token=token)
gl_user = 'https://gitlab.geant.org/api/v4/users'
gl_proj = 'https://gitlab.geant.org/api/v4/projects'
gl_license = 'repository/files/LICENSE?ref='
gl_branch = 'repository/branches'
projects = gl.projects.list(all=True)
elif args.developer:
token = os.getenv('DEVELOPER_TOKEN')
print('testowy')
headers = {'PRIVATE-TOKEN': token}
gl = gitlab.Gitlab(url='https://k8s-gitlab.software.geant.org', private_token=token)
gl_user = 'https://k8s-gitlab.software.geant.org/api/v4/users'
gl_proj = 'https://k8s-gitlab.software.geant.org/api/v4/projects'
gl_license = 'repository/files/LICENSE?ref='
gl_branch = 'repository/branches'
projects = gl.projects.list(all=True)
else:
print("No variable, exit")
exit()
# pobieranie listy projektów
# # testowe
# headers = {'PRIVATE-TOKEN': 'glpat-hQFB1vBzz9rQzq8wuhcG'}
# gl = gitlab.Gitlab(url='https://k8s-gitlab.software.geant.org', private_token='glpat-hQFB1vBzz9rQzq8wuhcG')
# gl_user = 'https://k8s-gitlab.software.geant.org/api/v4/users'
# gl_proj = 'https://k8s-gitlab.software.geant.org/api/v4/projects'
# gl_license = 'repository/files/LICENSE?ref='
# gl_branch = 'repository/branches'
# projects = gl.projects.list()
# # (all=True)
# produkcyjne
# headers = {'PRIVATE-TOKEN': 'glpat-P6orz6-t2f3n1BoVDrnr'}
# gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token='glpat-P6orz6-t2f3n1BoVDrnr')
# gl_user = 'https://gitlab.geant.org/api/v4/users'
# gl_proj = 'https://gitlab.geant.org/api/v4/projects'
# gl_license = 'repository/files/LICENSE?ref='
# gl_branch = 'repository/branches'
# projects = gl.projects.list(all=True)
j_project = {}
j_project['projects'] = {}
for project in projects:
# print('Project ID: ', project.attributes['id'])
# print('Project Name: ', project.attributes['name_with_namespace'])
# # print('branch', project.attributes['default_branch'])
# print('status', project.attributes['visibility'])
# print('aktywny', project.attributes['last_activity_at'])
# print('grupa', project.attributes['namespace']['name'])
x = project.attributes['id']
check_b = gl_proj + '/' + str(x)
check_b_response = requests.get(check_b, headers=headers)
check_b_data = check_b_response.text
check_b_answer = json.loads(check_b_data)
if "default_branch" in check_b_answer:
branch = project.attributes['default_branch']
# x = project.attributes['id']
c_link = gl_proj + '/' + str(x) + '/' + gl_license + branch
c_response = requests.get(c_link, headers=headers)
c_data = c_response.text
c_answer = json.loads(c_data)
if "message" in c_answer:
# print("License file: ", c_answer['message'])
lic = c_answer['message']
if "file_name" in c_answer:
# print("License file: ", c_answer['file_name'])
lic = c_answer['file_name']
# print('branch', project.attributes['default_branch'])
else:
lic = 'No created repository'
sep = 'T'
full_act = project.attributes['last_activity_at']
last_act = full_act.split(sep, 1)[0]
# print("ostatnia aktywnosc: ", last_act)
tmp = {
'project_id': project.attributes['id'],
'project_name': project.attributes['name_with_namespace'],
'project_group': project.attributes['namespace']['name'],
'project_status': project.attributes['visibility'],
'project_license': lic,
'project_last_activity': last_act
}
j_project['projects'][x] = {}
j_project['projects'][x] = tmp
j_project['projects'][x]['owners'] = {}
link = (project.attributes['_links']['members'] + '/all')
response = requests.get(link, headers=headers)
data = response.text
owners = json.loads(data)
for owner in owners:
if owner['access_level'] == 50:
# print('User ID: ', owner['id'])
# print('User Name: ', owner['name'])
# print('Access level: ', owner['access_level'])
y = owner['id']
j_project['projects'][x]['owners'][y] = {}
user = gl.users.get(y)
emails = user.emails.list()
if user.email == user.commit_email:
user_tmp = {
'owner_id': owner['id'],
'owner_name': owner['name'],
'owner_mail': user.email,
}
else:
user_tmp = {
'owner_id': owner['id'],
'owner_name': owner['name'],
'owner_mail': user.email,
'owner_mail_commit': user.commit_email
}
j_project['projects'][x]['owners'][y] = user_tmp
# print(8*"-")
except:
print('Cant connect to GitLab server, check credential')
exit()
new_jproject = json.dumps(j_project, indent=4, ensure_ascii=False)
# print(new_jproject)
with open("gitlab-projects.json", "w", encoding='utf8') as outfile:
outfile.write(new_jproject)
new_jproject_html = json2html.convert(json=new_jproject)
with open("gitlab-projects.html", "w", encoding='utf8') as outfile:
outfile.write(new_jproject_html)
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment