From 6159e65659593e75515d26059299582fa86d8bba Mon Sep 17 00:00:00 2001
From: "steven.liatti" <steven.liatti@hesge.ch>
Date: Mon, 11 Nov 2019 17:18:10 +0100
Subject: [PATCH] Add script to clone all repositories in a given group

---
 .gitmodules                 |  3 ---
 clone_all_repos_in_group.py | 41 +++++++++++++++++++++++++++++++++++++
 public                      |  1 -
 3 files changed, 41 insertions(+), 4 deletions(-)
 delete mode 100644 .gitmodules
 create mode 100755 clone_all_repos_in_group.py
 delete mode 160000 public

diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 15c6786..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "public"]
-	path = public
-	url = ssh://git@ssh.hesge.ch:10572/iti_assistants/modele-tp-etudiants-public.git
diff --git a/clone_all_repos_in_group.py b/clone_all_repos_in_group.py
new file mode 100755
index 0000000..ad3d7c2
--- /dev/null
+++ b/clone_all_repos_in_group.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python3
+
+import sys
+import json
+import requests
+import subprocess
+
+if len(sys.argv) < 3:
+    print('Usage: ' + sys.argv[0] + ' <token> <group_id>')
+    exit(1)
+
+token = sys.argv[1]
+group_id = sys.argv[2]
+
+base_url = 'https://gitedu.hesge.ch/api/v4/'
+params = {'simple': 'true', 'per_page': 100}
+headers = {'PRIVATE-TOKEN': token}
+
+repositories = requests.get(base_url + '/groups/' + group_id + '/projects', params=params, headers=headers).json()
+if 'message' in repositories:
+    print('Error retrieving repositories: ' + repositories['message'])
+    exit(1)
+
+for repo in repositories:
+    repo_url = base_url + '/projects/' + str(repo['id']) + '/members'
+    members = requests.get(repo_url, headers=headers).json()
+    if 'message' in members:
+        print('Error retrieving members: ' + members['message'])
+        exit(1)
+
+    ssh_url_to_repo = repo['ssh_url_to_repo']
+    web_url = repo['web_url']
+    members_names = ''
+
+    for member in members:
+        members_names += member['username'] + ', '
+
+    print('Members: ' + members_names)
+    print('Web url: ' + web_url)
+    print('Cloning in "repositories/' + repo['path'] + '"\n')
+    subprocess.run(["git", "clone", "-q", ssh_url_to_repo, "repositories/" + repo['path']])
diff --git a/public b/public
deleted file mode 160000
index 51f1685..0000000
--- a/public
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 51f16857a239d5a0272ad969d97d1c2b726965f6
-- 
GitLab