@@ -13,6 +13,27 @@ ARCHSHELL_DIR="${HOME}/.arch-shell"
1313ARCHSHELL_STORE=" ${ARCHSHELL_DIR} /store"
1414BASE_TEMPLATE=" ${ARCHSHELL_STORE} /base-template"
1515
16+ RED=' \033[0;31m'
17+ GREEN=' \033[0;32m'
18+ YELLOW=' \033[1;33m'
19+ BLUE=' \033[0;34m'
20+ NC=' \033[0m'
21+
22+ spinner () {
23+ local pid=$1
24+ local msg=" $2 "
25+ local spinstr=' |/-\\'
26+ local i=0
27+ tput civis
28+ while kill -0 $pid 2> /dev/null; do
29+ i=$(( (i+ 1 ) % 4 ))
30+ printf " \r${YELLOW} [*] %s %s${NC} " " ${spinstr: $i : 1} " " $msg "
31+ sleep 0.1
32+ done
33+ printf " \r${GREEN} [*] %s terminé !${NC} \n" " $msg "
34+ tput cnorm
35+ }
36+
1637usage () {
1738 echo " Usage: $0 init | regen-base | create <env> | -S <env> <pkg...> | enter <env> | delete <env> | list | info <env>"
1839 exit 1
@@ -70,25 +91,25 @@ case "$1" in
7091 if [ -d " $BASE_TEMPLATE " ]; then
7192 echo " Template de base existe déjà. Utilisez 'regen-base' pour le régénérer."
7293 else
73- echo " Initialisation du template de base..."
74- if sudo mkarchroot " $BASE_TEMPLATE " base > /dev/null 2>&1 ; then
75- echo " Template de base créé. "
76- else
77- echo " Erreur lors de la création du template de base. " ; exit 2 ;
78- fi
94+ echo -e " ${BLUE} [*] Création du template de base...${NC} "
95+ (
96+ sudo mkarchroot " $BASE_TEMPLATE " base > /dev/null 2>&1
97+ ) &
98+ spinner $! " Création du template de base"
99+ echo -e " ${GREEN} [*] Template de base créé. ${NC} "
79100 fi
80101 ;;
81102 regen-base)
82103 mkdir -p " $ARCHSHELL_STORE "
83- echo " Régénération du template de base..."
104+ echo -e " ${BLUE} [*] Régénération du template de base...${NC} "
84105 if [ -d " $BASE_TEMPLATE " ]; then
85106 sudo rm -rf " $BASE_TEMPLATE "
86107 fi
87- if sudo mkarchroot " $BASE_TEMPLATE " base > /dev/null 2>&1 ; then
88- echo " Template de base régénéré. "
89- else
90- echo " Erreur lors de la régénération du template de base. " ; exit 6 ;
91- fi
108+ (
109+ sudo mkarchroot " $BASE_TEMPLATE " base > /dev/null 2>&1
110+ ) &
111+ spinner $! " Régénération du template de base"
112+ echo -e " ${GREEN} [*] Template de base régénéré. ${NC} "
92113 ;;
93114 create)
94115 if [ $# -lt 2 ]; then
@@ -103,11 +124,18 @@ case "$1" in
103124 if [ -d " ${ARCHSHELL_DIR} /${ENVNAME} " ]; then
104125 echo " L'environnement ${ENVNAME} existe déjà." ; exit 5;
105126 fi
106- echo " Création de l'environnement $ENVNAME à partir du template..."
107- sudo cp -a " $BASE_TEMPLATE " " ${ARCHSHELL_DIR} /${ENVNAME} "
127+ echo -e " ${BLUE} [*] Création de l'environnement $ENVNAME à partir du template...${NC} "
128+ mkdir -p " ${ARCHSHELL_DIR} /${ENVNAME} "
129+ total=$( sudo du -sb " $BASE_TEMPLATE " | awk ' {print $1}' )
130+ (
131+ n=0
132+ sudo tar cf - -C " $BASE_TEMPLATE " . | \
133+ sudo tar xf - -C " ${ARCHSHELL_DIR} /${ENVNAME} "
134+ ) 2> >( grep -v ' socket ignorée' >&2 ) &
135+ spinner $! " Copie du template"
108136 sudo chown -R $USER : " ${ARCHSHELL_DIR} /${ENVNAME} "
109137 update_env_info " $ENVNAME "
110- echo " Environnement $ENVNAME créé."
138+ echo -e " ${GREEN} [*] Environnement $ENVNAME créé.${NC} "
111139 ;;
112140 -S)
113141 if [ $# -lt 3 ]; then
@@ -119,16 +147,16 @@ case "$1" in
119147 if [ ! -d " ${ARCHSHELL_DIR} /${ENVNAME} " ]; then
120148 echo " Environnement inexistant : ${ENVNAME} " ; exit 3;
121149 fi
122- echo " Installation de(s) paquet(s) $* dans $ENVNAME ..."
123- if sudo arch-nspawn -c /var/cache/pacman/pkg " ${ARCHSHELL_DIR} / ${ENVNAME} " pacman -S --noconfirm " $@ " > /dev/null 2>&1 ; then
124- echo " Installation terminée. "
125- update_last_used " $ENVNAME "
126- for pkg in " $@ " ; do
127- add_package " $ENVNAME " " $pkg "
128- done
129- else
130- echo " Erreur lors de l'installation des paquets. " ; exit 4 ;
131- fi
150+ echo -e " ${BLUE} [*] Installation de(s) paquet(s) $* dans $ENVNAME ...${NC} "
151+ (
152+ sudo arch-nspawn -c /var/cache/pacman/pkg " ${ARCHSHELL_DIR} / ${ENVNAME} " pacman -S --noconfirm " $@ " > /dev/null 2>&1
153+ ) &
154+ spinner $! " Installation des paquets "
155+ echo -e " ${GREEN} [*] Installation terminée. ${NC} "
156+ update_last_used " $ENVNAME "
157+ for pkg in " $@ " ; do
158+ add_package " $ENVNAME " " $pkg "
159+ done
132160 ;;
133161 enter)
134162 if [ $# -lt 2 ]; then
0 commit comments