Skip to content

Commit 0cd34b2

Browse files
authored
Merge pull request #1 from ArchimedeOS-Development/feat/add-arch-shell-tool
Feat/add arch shell tool
2 parents e66ec2a + 8133994 commit 0cd34b2

2 files changed

Lines changed: 76 additions & 0 deletions

File tree

aos-forge

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# Script : aos-forge
55
# Description : Gestion des conteneurs Docker pour ArchimedeOS
66
# Auteur : Killian Prin-abeil <killian@archimedeos.org>
7+
# Date : $(date +%Y-%m-%d)
78
# =============================================
89

910
set -euo pipefail

arch-shell

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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

Comments
 (0)