-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcheckout.sh
More file actions
executable file
·53 lines (46 loc) · 1.95 KB
/
checkout.sh
File metadata and controls
executable file
·53 lines (46 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/bash
# Vérifier que le fichier projects.list existe
if [ ! -f "./projects.list" ]; then
echo "[❌] Le fichier ./projects.list est introuvable."
exit 1
fi
# Lire chaque ligne du fichier projects.list (format: folder git_link)
while IFS= read -r line || [ -n "$line" ]; do
# Nettoyer la ligne (suppression des espaces et retours chariot)
line="$(echo "$line" | tr -d '\r' | xargs)"
# Ignorer les lignes vides ou les commentaires
if [[ -z "$line" || "$line" =~ ^# ]]; then
continue
fi
# Extraire folder et URL (format: folder git_link)
folder=$(echo "$line" | awk '{print $1}')
repo_url=$(echo "$line" | awk '{print $2}')
if [ -z "$folder" ] || [ -z "$repo_url" ]; then
echo "[❌] Ligne invalide dans projects.list: '$line' (attendu: folder git_link)"
continue
fi
# Cloner ou mettre à jour le projet dans le dossier parent
target_dir="../$folder"
if [ ! -d "$target_dir" ]; then
echo "[❕] Clonage de $repo_url dans $target_dir"
git clone "$repo_url" "$target_dir"
if [ $? -eq 0 ]; then
echo "[✅] Le projet $folder a été cloné avec succès dans $target_dir."
else
echo "[❌] Erreur lors du clonage de $folder."
continue
fi
elif [ -d "$target_dir/.git" ]; then
echo "[❕] Le projet $folder existe déjà dans $target_dir, mise à jour du projet..."
git -C "$target_dir" pull && echo "[✅] Mise à jour réussie pour $folder" || echo "[❌] Échec du pull pour $folder"
else
echo "[❌] Le dossier $target_dir existe déjà mais n'est pas un dépôt git, clonage ignoré."
fi
# Créer le lien symbolique dans le dossier courant
if [ ! -L "$folder" ]; then
ln -s "$target_dir" "$folder"
echo "[✅] Lien symbolique créé pour $folder -> $target_dir."
else
echo "[❕] Le lien symbolique $folder existe déjà."
fi
done < "./projects.list"