|
|
|
@ -13,17 +13,17 @@ strip() {
|
|
|
|
|
|
|
|
|
|
verif() {
|
|
|
|
|
if [[ $? -gt 0 ]]; then
|
|
|
|
|
echo "Erreur ! Arrêt du script."
|
|
|
|
|
exit 1
|
|
|
|
|
echo "Erreur ! Arrêt du script."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
error() {
|
|
|
|
|
if [[ -n $1 ]]; then
|
|
|
|
|
echo "ERREUR : $1 !"
|
|
|
|
|
echo "ERREUR : $1 !"
|
|
|
|
|
else
|
|
|
|
|
echo "ERREUR : paramètres invalides !" >&2
|
|
|
|
|
echo "utilisez l'option -h pour en savoir plus" >&2
|
|
|
|
|
echo "ERREUR : paramètres invalides !" >&2
|
|
|
|
|
echo "utilisez l'option -h pour en savoir plus" >&2
|
|
|
|
|
fi
|
|
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
@ -69,34 +69,34 @@ regen_worldmt() {
|
|
|
|
|
# Créer un nouveau fichier temporaire sans les lignes commençant par load_mod
|
|
|
|
|
local i=0
|
|
|
|
|
cat "$worldfile" | while read -r line; do
|
|
|
|
|
local match=$(echo $line | grep load_mod_)
|
|
|
|
|
if [[ -z $match ]]; then
|
|
|
|
|
if [[ $i -eq 0 ]]; then
|
|
|
|
|
echo $line > /tmp/world.mt
|
|
|
|
|
else
|
|
|
|
|
echo $line >> /tmp/world.mt
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
local match=$(echo $line | grep load_mod_)
|
|
|
|
|
if [[ -z $match ]]; then
|
|
|
|
|
if [[ $i -eq 0 ]]; then
|
|
|
|
|
echo $line > /tmp/world.mt
|
|
|
|
|
else
|
|
|
|
|
echo $line >> /tmp/world.mt
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
i=$(( $i+1 ))
|
|
|
|
|
i=$(( $i+1 ))
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Recréation des liens symboliques des mods dans le dossier minetest
|
|
|
|
|
# et générer une ligne "load_mod_<mod> = true ou false" pour chaque mod
|
|
|
|
|
# et l'ajouter au fichier
|
|
|
|
|
# local mods_path=$serverpath/nalc-server-mods
|
|
|
|
|
# local mods_path=$serverpath/nalc-server-mods
|
|
|
|
|
local mods="$MINETEST_DIR/mods"
|
|
|
|
|
local mods_custom="$serverpath/custom/mods"
|
|
|
|
|
|
|
|
|
|
# Suppression d'éventuels liens symboliques du dossier des mods
|
|
|
|
|
ls "$mods" | while read -r mod; do
|
|
|
|
|
[ -L "$mods/$mod" ] && rm -f "$mods/$mod"
|
|
|
|
|
[ -L "$mods/$mod" ] && rm -f "$mods/$mod"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ -d "$mods_custom" ]; then
|
|
|
|
|
ls $mods_custom | while read -r mod; do
|
|
|
|
|
[ -d $mods_custom/$mod ] && ln -s $mods_custom/$mod $mods/$mod
|
|
|
|
|
done
|
|
|
|
|
ls $mods_custom | while read -r mod; do
|
|
|
|
|
[ -d $mods_custom/$mod ] && ln -s $mods_custom/$mod $mods/$mod
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Liste des mods à désactiver
|
|
|
|
@ -104,25 +104,25 @@ regen_worldmt() {
|
|
|
|
|
|
|
|
|
|
# Populate world.mt
|
|
|
|
|
ls "$mods" | while read -r mod; do
|
|
|
|
|
if [ -d $mods/$mod ]; then
|
|
|
|
|
if [ -e $mods/$mod/init.lua ]; then
|
|
|
|
|
local mod_enable="true"
|
|
|
|
|
for (( modn=0; modn<${#md[@]}; modn++ )); do
|
|
|
|
|
[ ${md[$modn]} == $mod ] && mod_enable="false"
|
|
|
|
|
done
|
|
|
|
|
echo "load_mod_$mod = $mod_enable" >> /tmp/world.mt
|
|
|
|
|
else
|
|
|
|
|
ls "$mods/$mod" | while read -r submod; do
|
|
|
|
|
if [ -d "$mods/$mod/$submod" ]; then
|
|
|
|
|
local mod_enable="true"
|
|
|
|
|
for (( modn=0; modn<${#md[@]}; modn++ )); do
|
|
|
|
|
[ ${md[$modn]} == $submod ] && mod_enable="false"
|
|
|
|
|
done
|
|
|
|
|
echo "load_mod_$submod = $mod_enable" >> /tmp/world.mt
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
if [ -d $mods/$mod ]; then
|
|
|
|
|
if [ -e $mods/$mod/init.lua ]; then
|
|
|
|
|
local mod_enable="true"
|
|
|
|
|
for (( modn=0; modn<${#md[@]}; modn++ )); do
|
|
|
|
|
[ ${md[$modn]} == $mod ] && mod_enable="false"
|
|
|
|
|
done
|
|
|
|
|
echo "load_mod_$mod = $mod_enable" >> /tmp/world.mt
|
|
|
|
|
else
|
|
|
|
|
ls "$mods/$mod" | while read -r submod; do
|
|
|
|
|
if [ -d "$mods/$mod/$submod" ]; then
|
|
|
|
|
local mod_enable="true"
|
|
|
|
|
for (( modn=0; modn<${#md[@]}; modn++ )); do
|
|
|
|
|
[ ${md[$modn]} == $submod ] && mod_enable="false"
|
|
|
|
|
done
|
|
|
|
|
echo "load_mod_$submod = $mod_enable" >> /tmp/world.mt
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Remplacement du l'ancien world.mt par le nouveau
|
|
|
|
@ -148,82 +148,81 @@ update_world() {
|
|
|
|
|
local world_dest="$MINETEST_DIR/worlds/$WORLD_NAME"
|
|
|
|
|
|
|
|
|
|
if [ ! -d "$world_repos" ]; then
|
|
|
|
|
error "$world_repos not found"
|
|
|
|
|
error "$world_repos not found"
|
|
|
|
|
fi
|
|
|
|
|
if [ ! -d "$world_dest" ]; then
|
|
|
|
|
error "$world_dest not found"
|
|
|
|
|
error "$world_dest not found"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ $WORLD_FILE == "all" ]; then
|
|
|
|
|
WORLD_FILE="moretrees news technic fbn fbnp bitchange christmas randommsg worldmt"
|
|
|
|
|
WORLD_FILE="moretrees news technic fbn fbnp bitchange christmas randommsg worldmt"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
for w_file in $WORLD_FILE; do
|
|
|
|
|
local file=""
|
|
|
|
|
local file_dest=""
|
|
|
|
|
local do_copy=1
|
|
|
|
|
case $w_file in
|
|
|
|
|
moretrees)
|
|
|
|
|
file_dest=$world_dest/moretrees_settings.txt
|
|
|
|
|
file=$world_repos/moretrees_settings-$BRANCH.txt;;
|
|
|
|
|
news)
|
|
|
|
|
file_dest=$world_dest/news.txt
|
|
|
|
|
file=$world_repos/news-$BRANCH.txt;;
|
|
|
|
|
technic)
|
|
|
|
|
file_dest=$world_dest/technic.conf
|
|
|
|
|
file=$world_repos/technic-$BRANCH.conf;;
|
|
|
|
|
fbn)
|
|
|
|
|
file_dest=$world_dest/forbidden_names.txt
|
|
|
|
|
file=$world_repos/forbidden_names-$BRANCH.txt;;
|
|
|
|
|
fbnp)
|
|
|
|
|
file_dest=$world_dest/forbidden_names_patterns.txt
|
|
|
|
|
file=$world_repos/forbidden_names_patterns-$BRANCH.txt;;
|
|
|
|
|
bitchange)
|
|
|
|
|
file_dest=$world_dest/bitchange_config.txt
|
|
|
|
|
file=$world_repos/bitchange_config-$BRANCH.txt;;
|
|
|
|
|
christmas)
|
|
|
|
|
file_dest=$world_dest/christmas_craft.conf
|
|
|
|
|
file=$world_repos/christmas_craft-$BRANCH.conf;;
|
|
|
|
|
randommsg)
|
|
|
|
|
file_dest=$world_dest/random_messages
|
|
|
|
|
file=$world_repos/random_messages-$BRANCH;;
|
|
|
|
|
worldmt)
|
|
|
|
|
do_copy=0
|
|
|
|
|
regen_worldmt;;
|
|
|
|
|
mtconf) # Exception ici car n'est pas un fichier world. Doit être appelé seul.
|
|
|
|
|
file_dest="$MINETEST_DIR/minetest.conf"
|
|
|
|
|
file="$SCRIPT_DIR/minetest-$BRANCH.conf";;
|
|
|
|
|
*)
|
|
|
|
|
error;;
|
|
|
|
|
esac
|
|
|
|
|
local file=""
|
|
|
|
|
local file_dest=""
|
|
|
|
|
local do_copy=1
|
|
|
|
|
case $w_file in
|
|
|
|
|
moretrees)
|
|
|
|
|
file_dest=$world_dest/moretrees_settings.txt
|
|
|
|
|
file=$world_repos/moretrees_settings-$BRANCH.txt;;
|
|
|
|
|
news)
|
|
|
|
|
file_dest=$world_dest/news.txt
|
|
|
|
|
file=$world_repos/news-$BRANCH.txt;;
|
|
|
|
|
technic)
|
|
|
|
|
file_dest=$world_dest/technic.conf
|
|
|
|
|
file=$world_repos/technic-$BRANCH.conf;;
|
|
|
|
|
fbn)
|
|
|
|
|
file_dest=$world_dest/forbidden_names.txt
|
|
|
|
|
file=$world_repos/forbidden_names-$BRANCH.txt;;
|
|
|
|
|
fbnp)
|
|
|
|
|
file_dest=$world_dest/forbidden_names_patterns.txt
|
|
|
|
|
file=$world_repos/forbidden_names_patterns-$BRANCH.txt;;
|
|
|
|
|
bitchange)
|
|
|
|
|
file_dest=$world_dest/bitchange_config.txt
|
|
|
|
|
file=$world_repos/bitchange_config-$BRANCH.txt;;
|
|
|
|
|
christmas)
|
|
|
|
|
file_dest=$world_dest/christmas_craft.conf
|
|
|
|
|
file=$world_repos/christmas_craft-$BRANCH.conf;;
|
|
|
|
|
randommsg)
|
|
|
|
|
file_dest=$world_dest/random_messages
|
|
|
|
|
file=$world_repos/random_messages-$BRANCH;;
|
|
|
|
|
worldmt)
|
|
|
|
|
do_copy=0
|
|
|
|
|
regen_worldmt;;
|
|
|
|
|
mtconf) # Exception ici car n'est pas un fichier world. Doit être appelé seul.
|
|
|
|
|
file_dest="$MINETEST_DIR/minetest.conf"
|
|
|
|
|
file="$SCRIPT_DIR/minetest-$BRANCH.conf";;
|
|
|
|
|
*)
|
|
|
|
|
error;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
if [ $do_copy -eq 1 ]; then
|
|
|
|
|
[ ! -e $file ] && error "Le fichier $file n'existe pas"
|
|
|
|
|
|
|
|
|
|
echo "Copie de $file vers $file_dest"
|
|
|
|
|
cp -up $file $file_dest
|
|
|
|
|
fi
|
|
|
|
|
if [ $do_copy -eq 1 ]; then
|
|
|
|
|
[ ! -e $file ] && error "Le fichier $file n'existe pas"
|
|
|
|
|
|
|
|
|
|
echo "Copie de $file vers $file_dest"
|
|
|
|
|
cp -up $file $file_dest
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
action() {
|
|
|
|
|
[ ! -d "$serverpath" ] && error "$serverpath not found"
|
|
|
|
|
. "$serverpath/nalc.conf"
|
|
|
|
|
[[ $BRANCH == "exp" ]] && BRANCH="experimental"
|
|
|
|
|
|
|
|
|
|
if [ $UP_MODS -eq 1 ]; then
|
|
|
|
|
echo "Updating $MINETEST_DIR/mods…"
|
|
|
|
|
update_mods
|
|
|
|
|
echo "Mods updated."
|
|
|
|
|
exit 0
|
|
|
|
|
echo "Updating $MINETEST_DIR/mods…"
|
|
|
|
|
update_mods
|
|
|
|
|
echo "Mods updated."
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -n $WORLD_NAME ] && [ -n $BRANCH ]; then
|
|
|
|
|
echo "Updating $WORLD_FILE from $WORLD_NAME and branch $BRANCH"…
|
|
|
|
|
update_world
|
|
|
|
|
echo "World files updated."
|
|
|
|
|
echo "Updating $WORLD_FILE from $WORLD_NAME and branch $BRANCH"…
|
|
|
|
|
update_world
|
|
|
|
|
echo "World files updated."
|
|
|
|
|
elif [ -n $WORLD_NAME ] || [ -n $BRANCH ]; then
|
|
|
|
|
error
|
|
|
|
|
error
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -239,30 +238,30 @@ set -- $options
|
|
|
|
|
|
|
|
|
|
while true; do
|
|
|
|
|
case "$1" in
|
|
|
|
|
-h|--help)
|
|
|
|
|
usage
|
|
|
|
|
exit 0;;
|
|
|
|
|
-s|--serverpath)
|
|
|
|
|
serverpath=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
-m|--mods)
|
|
|
|
|
UP_MODS=1
|
|
|
|
|
shift;;
|
|
|
|
|
-w|--world)
|
|
|
|
|
WORLD_NAME=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
-b|--branch)
|
|
|
|
|
BRANCH=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
-f|--world-file)
|
|
|
|
|
WORLD_FILE=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
--)
|
|
|
|
|
shift;;
|
|
|
|
|
*)
|
|
|
|
|
action
|
|
|
|
|
exit 0
|
|
|
|
|
shift;;
|
|
|
|
|
-h|--help)
|
|
|
|
|
usage
|
|
|
|
|
exit 0;;
|
|
|
|
|
-s|--serverpath)
|
|
|
|
|
serverpath=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
-m|--mods)
|
|
|
|
|
UP_MODS=1
|
|
|
|
|
shift;;
|
|
|
|
|
-w|--world)
|
|
|
|
|
WORLD_NAME=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
-b|--branch)
|
|
|
|
|
BRANCH=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
-f|--world-file)
|
|
|
|
|
WORLD_FILE=$(strip $2)
|
|
|
|
|
shift 2;;
|
|
|
|
|
--)
|
|
|
|
|
shift;;
|
|
|
|
|
*)
|
|
|
|
|
action
|
|
|
|
|
exit 0
|
|
|
|
|
shift;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|