diff --git a/install.sh b/install.sh index f1938b8..225fefb 100755 --- a/install.sh +++ b/install.sh @@ -8,7 +8,7 @@ strip() { } verif() { - if [[ $? -gt 0 ]]; then + if [ $? -gt 0 ]; then echo "Erreur ! Arrêt du script." exit 1 fi @@ -21,19 +21,29 @@ error() { } usage() { - echo "Usage: ./install.sh [options] [--] " - echo "Options :" - echo -e "\t-h --help\tAffiche l'aide." - echo -e "\t-j --makeopt\tNombre de threads de compilation." - echo -e "\t--ssh : Identifiants ssh." - echo -e "\t--url : URL distante personnalisée." - echo -e "\t\tSi l'option --ssh est passée en option, il s'agira du chemin distant." - echo -e "\t-i --irrlicht\tChemin personnalisé des sources irrlicht." - echo -e "\t-p --postgresql\tSi vous voulez que le serveur soit configuré avec postgresql. Sinon leveldb par défaut." - echo "version :" - echo -e "\tstable : Installation du serveur compatible avec la dernière branche stable de minetest. Suivez les instructions... (Recommandé)" - echo -e "\tdev : Installation de la version en cours de developpement du serveur. Suivez les instructions... (Le plus à jour mais non Stable !)" - echo -e "\texperimental : Installation d'une version experimentale du serveur. Suivez les instructions... (Attention, très experimental !)" + echo "Usage : ./install.sh [options] [--] " + echo -e "\nOptions :" + echo -e "\t-h | --help\t\tAffiche cette aide." + echo -e "\t-j | --makeopt\t\tNombre de threads de compilation. (Nombre total de cœurs par défaut)" + echo -e "\t--ssh \tIdentifiants ssh." + echo -e "\t--url \t\tURL distante personnalisée." + echo -e "\t\t\t\tSi l'option --ssh est passée en option, il s'agira du chemin distant." + echo -e "\t-i | --irrlicht\t\tChemin personnalisé des sources irrlicht." + echo -e "\t-p | --postgresql\tBackend map et joueurs avec postgresql. Sinon leveldb sera utilisé par défaut." + echo -e "\t-e | --exec \tChemin de l'exécutable Minetest. Ex. /usr/local/bin/minetestserver" + echo -e "\t-d | --dir \tDossier d'exécution du serveur. Ex. /var/lib/minetest/.minetest" + echo -e "\nversion :" + echo -e "\tstable : La dernière version stable du serveur sera installée avec la dernière version stable de minetest. Suivez les instructions... (Recommandé)" + echo -e "\tdev : La version du serveur en cours de developpement sera installée avec la dernière version stable de minetest. Suivez les instructions... (Le plus à jour mais risques d'instabilités !)" + echo -e "\texperimental : La version experimentale du serveur sera installée avec la branche master de Minetest (version de dev). Suivez les instructions... (Attention, très experimental !)" + echo -e "\nExemples :" + echo -e "\n\t\$ ./install.sh stable" + echo -e "\tInstalle la dernière version stable du serveur avec leveldb comme backend pour la map et les utilisateurs. Tous les cœurs du processeur sont utilisés pour la compilation." + echo -e "\n\t\$ ./install.sh -j12 --url https://sys4.fr/gitea/grossam -i /home/grossam/lib/irrlichtmt -p dev" + echo -e "\tInstalle la version dev d'un fork de nalc créé par l'utilisateur grossam avec 12 threads de compilation, chemin personnalisé d'irrlichtmt et support de PostgreSQL comme backend de la map et des joueurs.\n" + echo -e "\nÀ voir également :" + echo -e "\tGuide de contribution et de développement du serveur NALC" + echo -e "\thttps://sys4.fr/gitea/nalc/nalc-server/wiki/Guide-de-contribution-et-de-d%C3%A9veloppement-du-serveur-NALC\n" exit 0 } @@ -66,46 +76,46 @@ postgresql() { } install_minetest() { - if [[ -z $makeopt ]]; then + if [ -z $makeopt ]; then local makeopt=$(grep -c processor /proc/cpuinfo) fi - if [[ -d minetest ]]; then + local branch="-b 5.5.0" + if [ $ver == "dev" ]; then + branch="-b stable-5" + elif [ $ver == "experimental" ]; then + branch="-b master" + fi + + if [ -d minetest ]; then echo "Installation précédente de Minetest détecté." read -p "Mettre à jour ? (y,n,clean,cancel) : " continue - if [[ $continue == "clean" ]]; then + if [ $continue == "clean" ]; then echo "Attention ! Cela va supprimer définitivement toutes les données." read -p "Êtes-vous certains de vouloir continuer ? (y or n) : " continue - if [[ $continue == "y" ]]; then + if [ $continue == "y" ]; then rm -rf minetest echo "Répertoire minetest supprimé." else echo "Installation annulée. Fin" exit 0 fi - elif [[ $continue == "y" ]]; then + elif [ $continue == "y" ]; then cd minetest git pull verif cd .. - elif [[ $continue == "cancel" ]]; then + elif [ $continue == "cancel" ]; then echo "Installation annulée. Fin" exit 0 fi fi - if [[ ! -d minetest ]]; then - local branch="-b 5.4.1" - - if [[ $ver == "dev" ]]; then - branch="-b stable-5" - elif [[ $ver == "experimental" ]]; then - branch="-b master" - fi - if [[ -n $ssh ]]; then + if [ ! -d minetest ]; then + if [ -n $ssh ]; then git clone --depth 1 $branch $ssh\:minetest/minetest.git else - git clone --depth 1 $branch https://gitlab.com/minetest/minetest.git + git clone --depth 1 $branch https://github.com/minetest/minetest.git fi verif fi @@ -113,7 +123,7 @@ install_minetest() { echo "Minetest va être (re)compilé..." sleep 3 cd minetest - cmake . -DBUILD_CLIENT=0 -DBUILD_SERVER=1 -DENABLE_SOUND=0 -DENABLE_SYSTEM_GMP=1 $irrlicht_src -DENABLE_LEVELDB=1 -DENABLE_REDIS=1 -DENABLE_POSTGRESQL=1 -DRUN_IN_PLACE=1 -DENABLE_GETTEXT=1 -DENABLE_FREETYPE=1 -DENABLE_LUAJIT=1 -DENABLE_CURL=1 + cmake . -DBUILD_CLIENT=0 -DBUILD_SERVER=1 -DENABLE_SOUND=0 -DENABLE_SYSTEM_GMP=1 -DENABLE_JSONCPP=1 $irrlicht_src -DENABLE_LEVELDB=1 -DENABLE_REDIS=1 -DENABLE_POSTGRESQL=1 -DRUN_IN_PLACE=1 -DENABLE_GETTEXT=1 -DENABLE_FREETYPE=1 -DENABLE_LUAJIT=1 -DENABLE_CURL=0 -DENABLE_CURSES=1 -DENABLE_SPATIAL=1 make -j$makeopt verif echo "Installation de Minetest terminé." @@ -121,37 +131,37 @@ install_minetest() { } install_minetest_game() { - if [[ -d nalc_game ]]; then + if [ -d nalc_game ]; then echo "Installation précédente du jeux NALC détecté." read -p "Mettre à jour ? (y,n,clean,cancel) " continue - if [[ $continue == "y" ]]; then + if [ $continue == "y" ]; then cd nalc_game git pull verif cd .. echo "Mise à jour du jeux NALC depuis dépôt distant terminé." - elif [[ $continue == "clean" ]]; then + elif [ $continue == "clean" ]; then echo "/!\ Cette action va effacer les données du répertoire nalc_game" read -p "Êtes-vous sûr de vouloir continuer ? (y or n) " continue - if [[ $continue == "y" ]]; then + if [ $continue == "y" ]; then rm -rf nalc_game echo "Jeux NALC supprimé." else echo "Mise à jour annulée. Terminé." exit 0 fi - elif [[ $continue == "cancel" ]]; then + elif [ $continue == "cancel" ]; then echo "Mise à jour annulée. Terminé." exit 0 fi fi - if [[ ! -d nalc_game ]]; then + if [ ! -d nalc_game ]; then local branch="-b master" - if [[ $ver == "dev" ]]; then + if [ $ver == "dev" ]; then branch="-b dev" - elif [[ $ver == "experimental" ]]; then + elif [ $ver == "experimental" ]; then branch="-b experimental" fi git clone --depth 1 $branch $URL/nalc_game.git @@ -159,7 +169,7 @@ install_minetest_game() { echo "Clonage de nalc_game terminé." fi - if [[ ! -L minetest/games/nalc_game ]]; then + if [ ! -L minetest/games/nalc_game ]; then ln -s $(pwd)/nalc_game minetest/games/nalc_game echo "Lien symbolique minetest/games/nalc_game vers $(pwd)/nalc_game créé." fi @@ -168,25 +178,25 @@ install_minetest_game() { } install_mods() { - if [[ -d nalc-server-mods ]]; then + if [ -d nalc-server-mods ]; then echo "Le dossier de mods est déjà présent. Que souhaitez-vous faire ?" read -p "Choisissez parmi la liste, ([1]update, [2]clean update, [3]cancel, [4]Ne rien faire) : " continue - if [[ $continue == 1 ]]; then + if [ $continue == 1 ]; then ./upgrade.sh -m - elif [[ $continue == 2 ]]; then + elif [ $continue == 2 ]; then rm -rf nalc-server-mods - elif [[ $continue == 3 ]]; then + elif [ $continue == 3 ]; then echo "Mise à jour des mods annulé. Terminé." exit 0 fi fi - if [[ ! -d nalc-server-mods ]]; then + if [ ! -d nalc-server-mods ]; then local branch="master" - if [[ $ver == "dev" ]]; then + if [ $ver == "dev" ]; then branch="dev" - elif [[ $ver == "experimental" ]]; then + elif [ $ver == "experimental" ]; then branch="experimental" fi git clone --depth 1 -b $branch $URL/nalc-server-mods.git @@ -194,31 +204,31 @@ install_mods() { ./upgrade.sh -m fi - if [[ -z $pg_dbname ]]; then + if [ -z $pg_dbname ]; then cp worldmt-1.1.conf world.mt fi } install_world() { local world_name="nalc-$ver" - if [[ -n $pg_dbname ]]; then + if [ -n $pg_dbname ]; then world_name=$pg_dbname fi - if [[ -d minetest/worlds/$world_name ]]; then + if [ -d minetest/worlds/$world_name ]; then echo "Une map est déjà présente. Que souhaitez-vous faire ?" read -p "Choisissez parmi la liste ([1]Nouveau, [2]Mettre à jour [3]Ne rien faire) : " continuer - if [[ $continuer == 1 ]]; then - if [[ -n $pg_dbname ]]; then + if [ $continuer == 1 ]; then + if [ -n $pg_dbname ]; then read -p "Les BDD $pg_dbname et players-$pg_dbname ne seront pas effacées. À vous de le faire manuellement après ce script ! -- Press enter -- : " continuer fi # On sauvegarde l'ancien world - if [[ -d "minetest/worlds/"$world_name"_old" ]]; then + if [ -d "minetest/worlds/"$world_name"_old" ]; then rm -rf "minetest/worlds/"$world_name"_old" fi mv minetest/worlds/$world_name "minetest/worlds/"$world_name"_old" - elif [[ $continuer == 2 ]]; then + elif [ $continuer == 2 ]; then # On sauvegarde l'ancien world - if [[ -d "minetest/worlds/"$world_name"_old" ]]; then + if [ -d "minetest/worlds/"$world_name"_old" ]; then rm -rf "minetest/worlds/"$world_name"_old" fi cp -r minetest/worlds/$world_name "minetest/worlds/"$world_name"_old" @@ -228,9 +238,9 @@ install_world() { fi fi - if [[ ! -d minetest/worlds/$world_name ]]; then + if [ ! -d minetest/worlds/$world_name ]; then mkdir -p minetest/worlds/$world_name - if [[ -n $pg_dbname ]]; then + if [ -n $pg_dbname ]; then createdb $pg_dbname createdb players-$pg_dbname fi @@ -242,9 +252,9 @@ install_world() { } post_install() { - if [[ ! -a minetest/minetest.conf ]]; then + if [ ! -a minetest/minetest.conf ]; then local world_name="nalc-$ver" - if [[ -n $pg_dbname ]]; then + if [ -n $pg_dbname ]; then world_name=$pg_dbname fi ./upgrade.sh -w $world_name -b $ver -f mtconf @@ -252,11 +262,11 @@ post_install() { echo "Veuillez éditer le fichier $(pwd)/minetest/minetest.conf" fi - if [[ ! -d logs ]]; then + if [ ! -d logs ]; then mkdir logs fi - if [[ ! -a start.sh ]]; then + if [ ! -a start.sh ]; then cp start.sh.example start.sh chmod u+x start.sh echo "Veuillez éditer le fichier $(pwd)/start.sh" @@ -283,7 +293,7 @@ install_mtmapper() { pushd "$(pwd)/minetestmapper" git pull cmake . - [ $? -eq 1 ] && echo "Vérifier les dépendances de minetestmapper puis recompiler." + [ $? -eq 1 ] && echo "Vérifiez les dépendances de minetestmapper puis recompilez." make -j$makeopt popd @@ -302,16 +312,18 @@ install_mtmapper() { init() { ver=$(strip $1) - if [[ -n $ssh && -n $url ]]; then + if [ -n $ssh && -n $url ]; then URL=$ssh\:$url - elif [[ -n $url ]]; then + elif [ -n $url ]; then URL=$url else URL="https://sys4.fr/gitea/nalc" fi read -p "L'installation va démarrer. Continuer ? (y or n) : " continue - if [[ $continue == "y" ]]; then + if [ $continue == "y" ]; then + # Vérification de l'environnement + install_minetest install_minetest_game install_mods @@ -326,7 +338,7 @@ init() { action() { local arg=$(strip $1) - if [[ $arg == "dev" || $arg == "stable" || $arg == "experimental" ]]; then + if [ $arg == "dev" || $arg == "stable" || $arg == "experimental" ]; then init $arg else error @@ -335,20 +347,38 @@ action() { } irrlicht() { - local arg=$(strip $1) - if [[ -d $arg ]]; then - irrlicht_src="-DIRRLICHT_SOURCE_DIR=$arg" + local arg=$(strip "$1") + if [ -d "$arg" ]; then + irrlicht_src="-DIRRLICHT_INCLUDE_DIR=$arg" + fi +} + +exepath() { + local arg=$(strip "$1") + if [ -e "$arg" ]; then + minetest_bin="$arg" + else + error "$arg n'existe pas" + fi +} + +minedir() { + local arg=$(strip "$1") + if [ -d "$arg" ]; then + minetest_dir="$arg" + else + error "$arg n'est pas un répertoire" fi } # Pas de paramètre -#[[ $# -lt 1 ]] && error +#[ $# -lt 1 ] && error # ou -[[ $# -lt 1 ]] && usage +[ $# -lt 1 ] && usage # -o : Options courtes # -l : options longues -OPT=$(getopt -o h,p,j:,i: -l help,postgresql,url:,ssh:,makeopt:,irrlicht: -- "$@") +OPT=$(getopt -o h,p,j:,i:,e:,d: -l help,postgresql,url:,ssh:,makeopt:,irrlicht:,exec:,dir: -- "$@") # éclatement de $options en $1, $2... set -- $OPT @@ -372,6 +402,12 @@ while true; do -j|--makeopt) makeopt $2 shift 2;; + -e|--exec) + exepath $2 + shift 2;; + -d|--dir) + minedir $2 + shift 2;; --) shift;; *)