Add reset function

This commit is contained in:
LinuxSquare 2024-01-06 16:06:04 +01:00
parent 5a71c2f44d
commit 9d89bd171b
4 changed files with 64 additions and 5 deletions

11
pms-cli
View file

@ -1,7 +1,7 @@
#!/usr/bin/env bash
# CONSTANTS
readonly PKGVER="0.1.1"
readonly PKGVER="0.2.0"
readonly LICENSE="GNU AGPLv3"
readonly ROOTPATH="$(dirname $(readlink -f $(which $0)))"
readonly TEMPLATEDIR="${ROOTPATH}/.template"
@ -26,7 +26,8 @@ operations:
$(basename ${0}) {--start} [servername] [port]
$(basename ${0}) {--stop} [servername]
$(basename ${0}) {--restart} [servername] [port]
$(basename ${0}) {--attach} [servername]"
$(basename ${0}) {--attach} [servername]
$(basename ${0}) {--reset} [servername]"
}
function version() {
@ -42,7 +43,7 @@ the terms of the ${LICENSE}"
###
OPT_SHORT="hVv"
OPT_LONG="help,version,verbose,init:,datapack:,start:,stop:,restart:,attach:"
OPT_LONG="help,version,verbose,init:,datapack:,start:,stop:,restart:,attach:,reset:"
TEMP=$(getopt -o ${OPT_SHORT} --long ${OPT_LONG} -n $(basename ${0}) -- "$@")
if [ "$?" != 0 ]; then
@ -90,6 +91,10 @@ while true; do
shift
attach "$1"
;;
--reset)
shift
reset "$1"
;;
--)
shift
break

View file

@ -78,6 +78,7 @@ function buildImage() {
log d "building docker image"
podman build --rm "${BUILDDIR}" --tag "${2}/${1}:${3}"
[[ $? -eq 0 ]] && log s "Image '${2}/${1}:${3}' built!"
log d "removing temporary build-dir"
[[ -f "${BUILDDIR}" ]] && rm -rf "${BUILDDIR}"
@ -93,6 +94,7 @@ function buildImage() {
function startContainer() {
log d "Starting container '$1'"
podman run --name "$1" --userns=keep-id:uid=1000 --rm -it -d -p $3:25565 -v $(getValueByKey 'PODMAN_DIRECTORY')/$1/data:/var/server "$2" java -Dcom.mojang.eula.agree=true -jar /var/exec/server.jar --nogui --port 25565
[[ $? -eq 0 ]] && log s "Container '$1' started!"
}
##
@ -103,4 +105,5 @@ function startContainer() {
function stopContainer() {
log d "Stopping container '$1'"
podman container stop --time 100 $1
log s "Container '$1' stopped"
}

51
utils/reset Normal file
View file

@ -0,0 +1,51 @@
#!/usr/bin/env bash
function reset() {
if [[ ! -d "$(getValueByKey 'PODMAN_DIRECTORY')/${1}" ]]; then
log e "Directory '${1}' does not exist"
exit 1
fi
local dir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}"
local datapack_dir="$dir/data/world/datapacks"
while [[ ! $deleteDataDir =~ [YyNn] ]]; do
read -p "Do you want to reset the complete data dir located in ${dir}/data ? (This is a unrecoverable process): " deleteDataDir
case "$deleteDataDir" in
"N"|"n")
log e "Aborted by user!"
exit 1
;;
esac
done
local backedup=false
while [[ ! $backupDatapacksAns =~ [YyNn] ]]; do
read -p "Do you want to backup the datapack .zip found in $datapack_dir ?: " backupDatapacksAns
case "$backupDatapacksAns" in
"Y"|"y")
if [[ -n $(find "${datapack_dir}" -maxdepth 1 -type f) ]]; then
local backedup=true
local tempdir=$(mktemp -d /tmp/pms-cli.XXXXXX)
mv ${datapack_dir}/*.zip ${tempdir}/
fi
;;
esac
done
rm -rf "$dir/data"
mkdir "$dir/data/world/datapacks"
if [[ "$backedup" == true ]]; then
while [[ ! $restoreDatapacksAns =~ [YyNn] ]]; do
read -p "You have some backed up datapack .zip in $tempdir. Do you want to restore them now?: " restoreDatapacksAns
case "$restoreDatapacksAns" in
"Y"|"y")
mv ${tempdir}/*.zip "${dir}/data/world/datapacks/"
rm -rf "$tempdir"
;;
esac
done
fi
log s "Server '$1' resetted!"
}

View file

@ -2,8 +2,8 @@
function stop() {
if [[ -z $(podman container ps | grep "$1") ]]; then
log e "Container '$1' is not running!"
exit 1
log w "Container '$1' is not running!"
return 1
fi
log i "Stopping container '$1'"
stopContainer "$1"