Ajout de beaucoup de chose
This commit is contained in:
168
launcher.sh
168
launcher.sh
@@ -1,7 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# AVERTISSEMENT LÉGAL ET TECHNIQUE
|
||||
# Date : 2025-10-08
|
||||
# Auteur : Lucas Morel <lucas.morel@epita.fr>
|
||||
# Version : v1.1 (https://github.com/PixPix20/Minecraft-Installer)
|
||||
#
|
||||
# 1) Objet : Ce script vise à automatiser le lancement de PrismLauncher.
|
||||
#
|
||||
# 2) Garantie : Fourni "tel quel", sans garantie expresse ou implicite.
|
||||
#
|
||||
# 3) Responsabilité : L'utilisateur est responsable de l'exécution sur son AFS.
|
||||
# Je décline toute responsabilité pour toute perte, corruption ou modification
|
||||
# de données, que le script ait été modifié ou non.
|
||||
#
|
||||
# 4) Modifications : Toute modification du script implique que le modificateur
|
||||
# assume l'entière responsabilité des conséquences.
|
||||
#
|
||||
# Contact : https://github.com/PixPix20
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
VERSION=1.1
|
||||
VERSION="1.1"
|
||||
|
||||
#On verifie qu'il y a assez de place pour installer minecraft en plus de garder un peu de place pour le reste
|
||||
#STOCKAGE
|
||||
@@ -10,8 +31,9 @@ minecraft_storage=943718400 #900Mo, j'utilise cette valeur si vous voulez jouer
|
||||
margin_storage=419430400 #400Mo, marge de securité pour que vous puissiez utiliser l'afs aprés l'installation du jeu, je deconseille de modifier cette valeur
|
||||
|
||||
#AFS
|
||||
afs="$HOME/afs"
|
||||
|
||||
#afs="$HOME/afs/test"
|
||||
afs="$HOME/test"
|
||||
i3="$afs/.confs/config/i3/config"
|
||||
#LAUNCHER
|
||||
|
||||
minecraft_path="$afs/minecraft" #dossier qui contient minecraft la conf du launcher etc
|
||||
@@ -31,22 +53,38 @@ bin_path="$minecraft_path/bin" #dossier où se trouve l'executable du launcher
|
||||
launcher_url="https://github.com/PrismLauncher/PrismLauncher/releases/download/9.4/PrismLauncher-Linux-x86_64.AppImage" #URL du github pour telecharger le launcher
|
||||
config_url="https://raw.githubusercontent.com/PixPix20/Minecraft-Installer/refs/heads/main/prismlauncher.cfg" #URL pour télécharger la config du launcher
|
||||
|
||||
help_msg(){
|
||||
cat <<EOF
|
||||
Minecraft Installer v$VERSION
|
||||
Usage: $0 [option]
|
||||
|
||||
Options:
|
||||
-i, --install Installer le PrismLauncher
|
||||
-u, --update Mettre à jour le script
|
||||
-r, --remove Désinstaller le launcher et ses fichiers
|
||||
-l, --launch Lancer PrismLauncher
|
||||
--add-dmenu Ajouter Le script à dmenu
|
||||
-h, --help Afficher ce texte
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
check_storage(){
|
||||
#verification si l'AFS peut installer minecraft en plus de garder un marge pour les autre fichiers
|
||||
local used_storage total_storage
|
||||
used_storage=$(de -sb "$afs"|awk '{print $1}')
|
||||
used_storage=$(du -sb "$afs"|awk '{print $1}')
|
||||
total_storage=$((used_storage + minecraft_storage + margin_storage)) #On additionne le stockage déja utilisé, la taille (~) de MC puis on ajoute une marge de secu.
|
||||
|
||||
}
|
||||
|
||||
check_patr(){
|
||||
check_path(){
|
||||
#Verfication de l'arbo du dossier minecraft
|
||||
mkdir -p $minecraft_path $launcher_config_path $instances_path $mods_path $java_path $bin_path
|
||||
}
|
||||
|
||||
check_config(){
|
||||
#telechargement et modification de la config
|
||||
local config="$launcher_config_path/primslauncher.cfg"
|
||||
local config="$launcher_config_path/prismlauncher.cfg"
|
||||
if [ ! -f "$config" ]; then
|
||||
wget -q -P "$launcher_config_path/" $config_url
|
||||
sed -i \
|
||||
@@ -58,6 +96,69 @@ check_config(){
|
||||
fi
|
||||
}
|
||||
|
||||
add_to_dmenu() {
|
||||
# Ajoute le bin dans le PATH via dmenu_run
|
||||
sed -i "s|bindsym \$mod+d exec --no-startup-id dmenu_run|bindsym \$mod+d exec --no-startup-id PATH=$bin_path:\$PATH dmenu_run|" "$i3"
|
||||
echo "export PATH=$bin_path:\$PATH" >> "$HOME/.bashrc"
|
||||
source "$HOME/.bashrc"
|
||||
cp "$0" "$bin_path/minecraft-launcher"
|
||||
#echo "Ajouté à dmenu !"
|
||||
}
|
||||
|
||||
remove_all() {
|
||||
#echo "Suppression de Minecraft et du launcher..."
|
||||
rm -rf "$minecraft_path"
|
||||
sed -i "s|PATH=$bin_path:\$PATH||g" "$HOME/.bashrc"
|
||||
#echo "Suppression terminée."
|
||||
}
|
||||
|
||||
update_script() {
|
||||
#echo "Mise à jour du script launcher.sh..."
|
||||
script_url="https://raw.githubusercontent.com/PixPix20/Minecraft-Installer/main/launcher.sh"
|
||||
wget -q -O "$0.tmp" "$script_url"
|
||||
if [ -s "$0.tmp" ]; then
|
||||
mv "$0.tmp" "$0"
|
||||
chmod +x "$0"
|
||||
echo "Script mis à jour !"
|
||||
else
|
||||
echo "Erreur lors du téléchargement de la mise à jour."
|
||||
rm -f "$0.tmp"
|
||||
fi
|
||||
}
|
||||
|
||||
get_remote_version() {
|
||||
# Récupère la version sur GitHub avec l'API
|
||||
remote_url="https://api.github.com/repos/PixPix20/Minecraft-Installer/releases/latest"
|
||||
version=$(curl -s $remote_url | jq -r '.tag_name')
|
||||
echo "$version"
|
||||
}
|
||||
|
||||
check_script_update() {
|
||||
local_version="$VERSION"
|
||||
remote_version=$(get_remote_version)
|
||||
|
||||
if [ -z "$remote_version" ]; then
|
||||
echo "Impossible de récupérer la version distante."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "Version locale : $local_version"
|
||||
echo "Version distante : $remote_version"
|
||||
|
||||
if [ 1 -eq "$(echo "${remote_version} > ${local_version}" | bc)" ]; then
|
||||
echo "Une nouvelle version du script est disponible."
|
||||
echo "Voulez-vous la mettre à jour ? [o/N]"
|
||||
read -r answer
|
||||
if [[ "$answer" =~ ^[Oo]$ ]]; then
|
||||
update_script
|
||||
else
|
||||
echo "Mise à jour annulée."
|
||||
fi
|
||||
else
|
||||
echo "Le script est à jour."
|
||||
fi
|
||||
}
|
||||
|
||||
check_account(){
|
||||
#enregistrement du compte une fois connecte
|
||||
while [ ! -f "$prismlocal_path/accounts.json" ]; do
|
||||
@@ -70,7 +171,7 @@ check_account(){
|
||||
check_launcher(){
|
||||
#telechargement du launcher si inexistant
|
||||
if [ ! -f "$launcher_appimage" ]; then
|
||||
echo "Téléchargement de $name..."
|
||||
#echo "Téléchargement de $name..."
|
||||
mkdir -p "$(dirname "$launcher_appimage")"
|
||||
#curl -L -o "$launcher_appimage" "$launcher_url" #si wget ne marche pas, décommentez cette ligne et commentez l'autre
|
||||
wget -q -O "$launcher_appimage" "$launcher_url"
|
||||
@@ -100,20 +201,45 @@ setup(){ #Configure i3 pour l'ajouter le launcher dans dmenu_run
|
||||
mv $(pwd)/launcher.sh $bin_path
|
||||
}
|
||||
|
||||
main() {
|
||||
if [ $# -eq 0 ]; then
|
||||
help_msg
|
||||
exit 0
|
||||
fi
|
||||
|
||||
start() {
|
||||
check_path
|
||||
check_config
|
||||
check_launcher
|
||||
start_launcher & check_account
|
||||
|
||||
case "$1" in
|
||||
-i|--install)
|
||||
check_storage || exit 1
|
||||
check_path
|
||||
check_config
|
||||
check_launcher
|
||||
add_to_dmenu
|
||||
echo "Installation terminée."
|
||||
;;
|
||||
-u|--update)
|
||||
check_script_update
|
||||
;;
|
||||
-r|--remove)
|
||||
remove_all
|
||||
;;
|
||||
-l|--launch)
|
||||
start_launcher
|
||||
check_path
|
||||
check_config
|
||||
check_launcher
|
||||
;;
|
||||
--add-dmenu)
|
||||
add_to_dmenu
|
||||
;;
|
||||
-h|--help)
|
||||
help_msg
|
||||
;;
|
||||
*)
|
||||
echo "Option inconnue: $1"
|
||||
help_msg
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
if [ $# -eq 0 ]; then
|
||||
start
|
||||
|
||||
elif [ $1 = -i ]; then
|
||||
if [ check_storage = false ]; then
|
||||
exit 0
|
||||
else start
|
||||
fi
|
||||
fi
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user