From 129197d0520a67f3f34a069a11a266909807d4a0 Mon Sep 17 00:00:00 2001
From: "steven.liatti" <steven.liatti@hesge.ch>
Date: Thu, 21 Nov 2019 20:44:25 +0100
Subject: [PATCH] Add bash script to batch operations

---
 create_group_and_repos.sh           | 22 ++++++++++++++++++++++
 scripts/clone_all_repos_in_group.py |  2 +-
 scripts/create_group.py             |  3 +--
 scripts/create_repo_for_students.py |  6 ++++++
 4 files changed, 30 insertions(+), 3 deletions(-)
 create mode 100755 create_group_and_repos.sh

diff --git a/create_group_and_repos.sh b/create_group_and_repos.sh
new file mode 100755
index 0000000..9556f55
--- /dev/null
+++ b/create_group_and_repos.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+if [[ $# != 4 ]]; then
+    echo "Usage: $0 <token> <group_name> <import_url> <repos_students>"
+    exit 1
+fi
+
+token=$1
+group_name=$2
+import_url=$3
+repos_students=$4
+
+group=$(scripts/create_group.py $token $group_name)
+group_id=$(echo $group | cut -d';' -f2)
+printf "$group\n\n"
+
+for line in $(cat $repos_students); do
+    project_name=$(echo $line | cut -d';' -f1)
+    students=$(echo $line | cut -d';' -f2)
+    new_repo=$(scripts/create_repo_for_students.py $token $import_url $group_id $project_name $students)
+    printf "$new_repo\n\n"
+done
diff --git a/scripts/clone_all_repos_in_group.py b/scripts/clone_all_repos_in_group.py
index f30d4fc..a6bfb8d 100755
--- a/scripts/clone_all_repos_in_group.py
+++ b/scripts/clone_all_repos_in_group.py
@@ -41,7 +41,7 @@ for repo in repositories:
     members_names = ''
 
     for member in members:
-        members_names += member['username'] + ', '
+        members_names += "'" + member['name'] + "' (" + member['username'] + '), '
 
     print('Members: ' + members_names)
     print('Web url: ' + web_url)
diff --git a/scripts/create_group.py b/scripts/create_group.py
index 418e31c..60e5bab 100755
--- a/scripts/create_group.py
+++ b/scripts/create_group.py
@@ -25,5 +25,4 @@ if 'message' in group:
     print('Error in creating group: %s' % group)
     exit(1)
 
-print("Group '" + group['name'] + "' with id '" + str(group['id']) + "' and visibility '" + group['visibility'] + "' available at '" + group['web_url'] + "'")
-print(str(group['id']))
\ No newline at end of file
+print("Group '" + group['name'] + "' with id '" + str(group['id']) + "' and visibility '" + group['visibility'] + "' available at '" + group['web_url'] + "';" + str(group['id']))
diff --git a/scripts/create_repo_for_students.py b/scripts/create_repo_for_students.py
index 7618296..23a0088 100755
--- a/scripts/create_repo_for_students.py
+++ b/scripts/create_repo_for_students.py
@@ -35,10 +35,16 @@ project = requests.post(base_url + '/projects', params=params, headers=headers).
 if 'message' in project:
     print('Error in creating project: %s' % project)
     exit(1)
+print("Project '" + project['name'] + "' at '" + project['web_url'] + "' created")
 
 # Add each student as project's maintainer (level 40)
 for user_id in users_ids:
     params = {'user_id': user_id, 'access_level': 40}
     new_user = requests.post(base_url + '/projects/' + str(project['id']) + '/members', params=params, headers=headers).json()
 
+    if 'message' in new_user:
+        print('Error in adding user: %s' % new_user)
+    else:
+        print("Adding '" + new_user['name'] + "' (" + new_user['username'] + ") in '" + project['name'] + "'")
+
 # Do not forget : students have to add second remote in their local repositories for pulling last changes.
-- 
GitLab