Update menu.sh

This commit is contained in:
MacRimi 2025-01-09 21:50:31 +01:00 committed by GitHub
parent 83683f0946
commit 02dfb510de
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

117
menu.sh
View File

@ -17,25 +17,23 @@ msg_error() { echo -e " ${RD}[ERROR] $1${CL}"; }
# Crear directorios necesarios # Crear directorios necesarios
mkdir -p "$LANG_DIR" mkdir -p "$LANG_DIR"
# Seleccionar idioma en la primera ejecución # Descargar archivo de idioma por defecto (español) para mensajes iniciales
if [ ! -f "$LANGUAGE_FILE" ]; then if [ ! -f "$LANG_DIR/es.lang" ]; then
LANGUAGE=$(whiptail --title "$LANG_SELECT" --menu "$LANG_PROMPT" 15 60 2 \ if ! wget -qO "$LANG_DIR/es.lang" "$REPO_URL/lang/es.lang"; then
"es" "Español" \ msg_error "Error al descargar el archivo de idioma inicial."
"en" "English" 3>&1 1>&2 2>&3)
if [ -z "$LANGUAGE" ]; then
msg_error "$LANG_ERROR"
exit 1 exit 1
fi fi
echo "$LANGUAGE" > "$LANGUAGE_FILE"
msg_ok "$LANG_SUCCESS $LANGUAGE"
else
LANGUAGE=$(cat "$LANGUAGE_FILE")
msg_info "$LANG_LOADED $LANGUAGE"
fi fi
# Descargar archivo de idioma si no existe # Cargar mensajes iniciales
source "$LANG_DIR/es.lang"
# Cargar o seleccionar idioma
load_language() {
if [ ! -f "$LANGUAGE_FILE" ]; then
select_language_first_time
else
LANGUAGE=$(cat "$LANGUAGE_FILE")
LANG_FILE="$LANG_DIR/$LANGUAGE.lang" LANG_FILE="$LANG_DIR/$LANGUAGE.lang"
if [ ! -f "$LANG_FILE" ]; then if [ ! -f "$LANG_FILE" ]; then
msg_info "$LANG_DOWNLOAD" msg_info "$LANG_DOWNLOAD"
@ -43,21 +41,67 @@ if [ ! -f "$LANG_FILE" ]; then
msg_error "$LANG_DOWNLOAD_ERROR" msg_error "$LANG_DOWNLOAD_ERROR"
exit 1 exit 1
fi fi
else fi
msg_ok "$LANG_EXISTS" source "$LANG_FILE"
msg_info "$LANG_LOADED $LANGUAGE"
fi
}
# Función para la primera selección de idioma
select_language_first_time() {
LANGUAGE=$(whiptail --title "$INITIAL_LANG_SELECT" --menu "$INITIAL_LANG_PROMPT" 15 60 2 \
"es" "Español" \
"en" "English" 3>&1 1>&2 2>&3)
if [ -z "$LANGUAGE" ]; then
msg_error "$INITIAL_LANG_ERROR"
exit 1
fi fi
# Cargar archivo de idioma LANG_FILE="$LANG_DIR/$LANGUAGE.lang"
if [ ! -f "$LANG_FILE" ]; then
if ! wget -qO "$LANG_FILE" "$REPO_URL/lang/$LANGUAGE.lang"; then
msg_error "$LANG_DOWNLOAD_ERROR"
exit 1
fi
fi
echo "$LANGUAGE" > "$LANGUAGE_FILE"
source "$LANG_FILE" source "$LANG_FILE"
msg_ok "$LANG_SUCCESS $LANGUAGE"
}
# Función para cambiar idioma desde el menú
select_language() {
LANGUAGE=$(whiptail --title "$LANG_SELECT" --menu "$LANG_PROMPT" 15 60 2 \
"es" "Español" \
"en" "English" 3>&1 1>&2 2>&3)
if [ -z "$LANGUAGE" ]; then
msg_error "$LANG_ERROR"
return
fi
LANG_FILE="$LANG_DIR/$LANGUAGE.lang"
if [ ! -f "$LANG_FILE" ]; then
msg_info "$LANG_DOWNLOAD"
if ! wget -qO "$LANG_FILE" "$REPO_URL/lang/$LANGUAGE.lang"; then
msg_error "$LANG_DOWNLOAD_ERROR"
return
fi
fi
echo "$LANGUAGE" > "$LANGUAGE_FILE"
msg_ok "$LANG_SUCCESS $LANGUAGE"
exec "$0"
}
# Verificar actualizaciones # Verificar actualizaciones
check_updates() { check_updates() {
msg_info "$UPDATE_CHECKING"
if wget -qO "$REMOTE_VERSION_FILE" "$REPO_URL/version.txt"; then if wget -qO "$REMOTE_VERSION_FILE" "$REPO_URL/version.txt"; then
REMOTE_VERSION=$(cat "$REMOTE_VERSION_FILE" | tr -d '\r') REMOTE_VERSION=$(cat "$REMOTE_VERSION_FILE" | tr -d '\r')
if [ ! -f "$LOCAL_VERSION_FILE" ]; then if [ ! -f "$LOCAL_VERSION_FILE" ]; then
# Si es la primera instalación, usar la versión del repositorio
echo "$REMOTE_VERSION" > "$LOCAL_VERSION_FILE" echo "$REMOTE_VERSION" > "$LOCAL_VERSION_FILE"
msg_info "$FIRST_INSTALL $REMOTE_VERSION" msg_info "$FIRST_INSTALL $REMOTE_VERSION"
else else
@ -76,9 +120,8 @@ check_updates() {
else else
msg_info "$UPDATE_POSTPONED" msg_info "$UPDATE_POSTPONED"
fi fi
else
msg_ok "$UPDATE_CURRENT"
fi fi
# Se eliminó el mensaje cuando las versiones son iguales
fi fi
else else
msg_error "$UPDATE_CHECK_ERROR" msg_error "$UPDATE_CHECK_ERROR"
@ -97,8 +140,30 @@ uninstall_proxmenu() {
fi fi
} }
# Mostrar menú de configuración
show_config_menu() {
while true; do
OPTION=$(whiptail --title "$CONFIG_TITLE" --menu "$SELECT_OPTION" 15 60 2 \
"1" "$LANG_OPTION" \
"2" "$UNINSTALL_OPTION" 3>&1 1>&2 2>&3)
case $OPTION in
1)
select_language
;;
2)
uninstall_proxmenu
;;
*)
return
;;
esac
done
}
# Mostrar menú principal # Mostrar menú principal
show_menu() { show_menu() {
while true; do
OPTION=$(whiptail --title "$MENU_TITLE" --menu "$SELECT_OPTION" 15 60 2 \ OPTION=$(whiptail --title "$MENU_TITLE" --menu "$SELECT_OPTION" 15 60 2 \
"1" "$OPTION_1" \ "1" "$OPTION_1" \
"2" "$OPTION_2" 3>&1 1>&2 2>&3) "2" "$OPTION_2" 3>&1 1>&2 2>&3)
@ -113,14 +178,14 @@ show_menu() {
fi fi
;; ;;
2) 2)
uninstall_proxmenu show_config_menu
;; ;;
*) *)
# Si el usuario presiona Cancelar o Esc
msg_ok "$EXIT_MESSAGE" msg_ok "$EXIT_MESSAGE"
exit 0 exit 0
;; ;;
esac esac
done
} }
# Verificar dependencias # Verificar dependencias
@ -135,8 +200,6 @@ if ! command -v whiptail &> /dev/null; then
fi fi
# Flujo principal # Flujo principal
load_language
check_updates check_updates
while true; do
show_menu show_menu
done