1+ #! /bin/bash
2+
3+ # =============================================
4+ # Script : arch-shell
5+ # Description : Gestion des environnements Arch Linux pour ArchimedeOS
6+ # Auteur : Killian Prin-abeil <killian@archimedeos.org>
7+ # Date : $(date +%Y-%m-%d)
8+ # =============================================
9+
10+ set -euo pipefail
11+
12+ ARCHSHELL_DIR=" ${HOME} /.arch-shells"
13+
14+ usage () {
15+ echo " Usage: $0 create <env> | -S <env> <pkg...> | enter <env> | delete <env>"
16+ exit 1
17+ }
18+
19+ if [ $# -lt 2 ]; then
20+ usage
21+ fi
22+
23+ case " $1 " in
24+ create)
25+ ENVNAME=" $2 "
26+ mkdir -p " $ARCHSHELL_DIR "
27+ echo " Création de l'environnement $ENVNAME ..."
28+ if sudo mkarchroot " ${ARCHSHELL_DIR} /${ENVNAME} " base > /dev/null 2>&1 ; then
29+ echo " Environnement $ENVNAME créé."
30+ else
31+ echo " Erreur lors de la création du chroot." ; exit 2;
32+ fi
33+ ;;
34+ -S)
35+ ENVNAME=" $2 "
36+ shift 2
37+ if [ ! -d " ${ARCHSHELL_DIR} /${ENVNAME} " ]; then
38+ echo " Environnement inexistant : ${ENVNAME} " ; exit 3;
39+ fi
40+ echo " Installation de(s) paquet(s) $* dans $ENVNAME ..."
41+ if sudo arch-nspawn " ${ARCHSHELL_DIR} /${ENVNAME} " pacman -S --noconfirm " $@ " > /dev/null 2>&1 ; then
42+ echo " Installation terminée."
43+ else
44+ echo " Erreur lors de l'installation des paquets." ; exit 4;
45+ fi
46+ ;;
47+ enter)
48+ ENVNAME=" $2 "
49+ if [ ! -d " ${ARCHSHELL_DIR} /${ENVNAME} " ]; then
50+ echo " Environnement inexistant : ${ENVNAME} " ; exit 3;
51+ fi
52+ echo " Entrée dans l'environnement $ENVNAME ."
53+ sudo arch-nspawn " ${ARCHSHELL_DIR} /${ENVNAME} "
54+ ;;
55+ delete)
56+ ENVNAME=" $2 "
57+ if [ ! -d " ${ARCHSHELL_DIR} /${ENVNAME} " ]; then
58+ echo " Environnement inexistant : ${ENVNAME} " ; exit 3;
59+ fi
60+ read -p " Supprimer définitivement ${ENVNAME} ? [o/N] " REP
61+ if [[ " $REP " =~ ^[oOyY]$ ]]; then
62+ sudo rm -rf " ${ARCHSHELL_DIR} /${ENVNAME} "
63+ LOCKFILE=" ${ARCHSHELL_DIR} /${ENVNAME} .lock"
64+ if [ -f " $LOCKFILE " ]; then
65+ sudo rm -f " $LOCKFILE "
66+ fi
67+ echo " Environnement supprimé."
68+ else
69+ echo " Annulé."
70+ fi
71+ ;;
72+ * )
73+ usage
74+ ;;
75+ esac
0 commit comments