#!/bin/bash exec_as() { local user="$1" shift if [ "$(whoami)" != "$user" ]; then exec sudo -u "$user" "$0" "$@" else cd fi } exec_as minecraft "$@" || exit bin=bin PATH="${bin}:${PATH}" EDITOR="${EDITOR:-nvim}" alias ls='ls --color=auto' shopt -s expand_aliases print_error() { >&2 printf '\033[31;1mERROR:\033[0m \033[1m%s\033[0m\n' "$*" } public_usage() { local name name="$(basename "$0")" cat << EOF ${name}: utilisation ${name} start|status|stop|watch|restart|edit ${name} list|active|usage|shell EOF } error_usage() { print_error "Utilisation invalide." >&2 public_usage return 1 } public_start() { if [ -n "$1" ]; then exec screen -S "$1" \ "$1" else error_usage fi } public_status() { if [ -n "$1" ]; then printf '\033[1m%s\033[0m : ' "$1" if screen -ls "$1" > /dev/null 2>&1; then echo "en cours d'exécution" else echo "non en cours d'exécution" fi else error_usage fi } public_stop() { if [ -n "$1" ]; then exec screen -S "$1" -X stuff '^E^Ustop^M' else error_usage fi } public_watch() { exec screen -dr "$1" } public_active() { exec screen -ls } public_list() { echo "Serveurs disponibles :" exec ls "$bin" } public_restart() { set -e stop "$@" start "$@" set +e } public_edit() { exec "$EDITOR" "${bin}/${1}" } public_shell() { exec bash -i } verb="$1" shift if [ -z "$verb" ]; then public_active elif declare -F | cut -d \ -f 3 | grep '^public_' | sed 's/^public_//' | grep -q "^${verb}$"; then "public_${verb}" "$@" else error_usage fi