source: spip-zone/_outils_/svn2git/trunk/create_user_gitea.sh

Last change on this file was 111077, checked in by cam.lafit@…, 15 months ago

Permettre de charger une fichier de configuration alternatif

File size: 2.5 KB
Line 
1#!/bin/bash
2
3#Controle des fonctions de base
4hash jq 2>/dev/null || { echo >&2 "Fonction jq requise. Script stoppé."; exit 1; }
5
6if [ -n ${1} -a -f ${1} ]; then
7    CONFIGURATION_FILE=$1
8fi
9
10. ${CONFIGURATION_FILE:-create_user_gitea.conf}
11GITEA_ORG_LIST=()
12
13#Obtenir les identifiants pour chaque organisation
14IFS=':' read -ra ORGAS <<< "$GITEA_ORGA"
15for orga in "${ORGAS[@]}"; do
16    GITEA_ORGA_ID=$(curl \
17    --silent \
18    -X GET \
19    -H "Authorization: token $GITEA_TOKEN" \
20    $GITEA_HOST/api/v1/orgs/$orga \
21    | jq -r ".id"
22    )
23
24    GITEA_ORGA_TEAM_ID=$(curl\
25    --silent \
26    -X GET \
27    -H "Authorization: token $GITEA_TOKEN" \
28    $GITEA_HOST/api/v1/orgs/$orga/teams \
29    | jq '.[] | select(.permission == "write") | .id'
30    )
31
32    GITEA_ORG_LIST+=("$orga:$GITEA_ORGA_ID:$GITEA_ORGA_TEAM_ID")
33done
34
35while read row ; do
36    #Ignorer les lignes vides ou commentées
37    if [ -z "$row" ]; then
38        continue;
39    fi
40    if [ `expr match "$row" '\s*#'` != "0" ]; then
41        continue;
42    fi
43
44    #Un compte de type mail doit être présent
45    if [ `expr index "$row" '@'` = "0" ]; then
46        continue;
47    fi
48
49    if [[ "$row" =~ ([a-zA-Z0-9@\.]*)[[:space:]]*=[[:space:]]*(.*) ]]; then
50            email=${BASH_REMATCH[1]}
51            password=${BASH_REMATCH[2]}
52            username=${email%@*}
53            username_2=${email/@/.}
54    fi
55
56    if [ -z "$email" -o -z "$password" ]; then
57        continue;
58    fi
59    echo "$row"
60
61    ## IMPORT in gitea
62    #Utiliser le prefixe de mail comme utilisateur
63    curl -H "Authorization: token $GITEA_TOKEN" \
64            -X POST \
65            --data "username=$username&email=$email&password=$password" \
66            $GITEA_HOST/api/v1/admin/users
67    #Se prémunir des collissions possible sur le prefixe de courriel ( a@domaine1 != a@domaine2 )
68    #On utilise le courriel comme nom d'utilisateur sans @
69    #On ne peut avoir 2 utilisateurs avec le meme courriel, donc pas de risque de dupliquer l'utilisateur
70    curl -H "Authorization: token $GITEA_TOKEN" \
71            -X POST \
72            --data "username=$username_2&email=$email&password=$password" \
73            $GITEA_HOST/api/v1/admin/users
74
75
76    for row_orga in "${GITEA_ORG_LIST[@]}" ; do
77        orga=(${row_orga//:/ })
78
79        curl -H "Authorization: token $GITEA_TOKEN" \
80                -X PUT \
81                $GITEA_HOST/api/v1/teams/${orga[2]}/members/$username
82        curl -H "Authorization: token $GITEA_TOKEN" \
83                -X PUT \
84                $GITEA_HOST/api/v1/teams/${orga[2]}/members/$username_2
85    done
86
87done <$SVN_USERS_FILE
Note: See TracBrowser for help on using the repository browser.