-
Notifications
You must be signed in to change notification settings - Fork 0
/
ktag
77 lines (63 loc) · 2.2 KB
/
ktag
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
# Fonction d'affichage de l'aide
print_usage() {
echo "Usage: ./kpush <image_name> <target_repository>:<tag1>:<tag2>:<tag3>:..."
echo "Example: ./kpush frankenzob registry.septeo.fr/septeo-portail/portal-franken:v1.0:latest"
}
# Vérification des arguments
if [ $# -lt 2 ]; then
echo "Erreur : Nombre incorrect d'arguments."
print_usage
exit 1
fi
# Extraction des arguments
IMAGE_NAME="$1"
TARGET_REFERENCE="$2"
# Vérification si l'image existe
if ! docker image inspect "$IMAGE_NAME" &> /dev/null; then
echo "Erreur : L'image '$IMAGE_NAME' n'existe pas."
exit 1
fi
# Diviser la référence cible en parties utilisant ':' comme séparateur
IFS=':' read -ra TAGS <<< "$TARGET_REFERENCE"
# Le premier élément est le repository, le reste sont les tags
TARGET_REPOSITORY="${TAGS[0]}"
unset TAGS[0] # Supprimer le premier élément (repository)
# Fonction pour afficher une arborescence en couleur avec une nomenclature
print_tree() {
local indent="$1"
local message="$2"
local color="$3"
local prefix="$4"
# Couleurs ANSI
local RED='\033[1;31m'
local GREEN='\033[1;32m'
local YELLOW='\033[1;33m'
local BLUE='\033[1;34m'
local NC='\033[0m' # No Color
case "$color" in
"red") COLOR="$RED" ;;
"green") COLOR="$GREEN" ;;
"yellow") COLOR="$YELLOW" ;;
"blue") COLOR="$BLUE" ;;
*) COLOR="$NC" ;;
esac
echo -e "${indent}${prefix} ${COLOR}${message}${NC}"
}
# Affichage de l'arborescence avec les résultats
print_tree "" "---------------------------------------------------------------------------" "blue"
print_tree "" "| Image: ${IMAGE_NAME}" "blue" "+"
print_tree " " "| Repository: ${TARGET_REPOSITORY}" "blue" "|"
# Tagging de l'image avec chaque tag spécifié et affichage des résultats dans l'arborescence
for TAG in "${TAGS[@]}"; do
TARGET_TAG="$TARGET_REPOSITORY:$TAG"
docker tag "$IMAGE_NAME" "$TARGET_TAG"
if [ $? -eq 0 ]; then
print_tree " " "|-- ${TAG}" "green" "|"
else
print_tree " " "|-- ${TAG}" "red" "|"
exit 1
fi
done
print_tree "" "---------------------------------------------------------------------------" "blue"
exit 0