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