[IMPROVED] Script de instalación de Helix con soporte para desinstalación

- Añadida opción -u/--uninstall para el script helix_install.sh
- Implementadas funciones para desinstalar según método de instalación (snap, tarball, paquetes)
- Añadidos nuevos mensajes traducidos en español para la funcionalidad
- Actualizada documentación en README.md
- Se limpian archivos de configuración además de los binarios
- Mejorado manejo de errores y verificación de desinstalación

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-04-05 20:19:05 -05:00
parent 98bfe2e714
commit d9b8745842
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
3 changed files with 205 additions and 47 deletions

View file

@ -114,6 +114,7 @@ MRDevs Tools integra herramientas modernas de Charm para mejorar la experiencia
| Comando | Descripción |
|---------|-------------|
| `bin/helix_install.sh` | Instala Helix Editor con soporte multiplataforma (apt, snap, pacman, etc.) |
| `bin/helix_install.sh -u` | Desinstala Helix Editor del sistema |
| `bin/vscode_install.sh` | Instala Visual Studio Code con detección automática del SO y sus métodos de instalación |
| `bin/vscode_install.sh -u` | Desinstala Visual Studio Code del sistema |
| `bin/zettlr_install.sh` | Instala Zettlr Markdown Editor con detección automática del SO |

View file

@ -1,14 +1,14 @@
#!/bin/bash
#Script : helix_install.sh
#Apps : MRDEVS TOOLS
#Description : Instala Helix Editor (console)
#Description : Instala/Desinstala Helix Editor (console)
#Author : Mauro Rosero Pérez
#Company Email : mauro@rosero.one
#Personal Email : mauro.rosero@gmail.com
#Created : 2025/03/11 15:00:00
#Modified : 2025/03/19 11:57:08
#Version : 1.2.0
#Use Notes :
#Modified : 2025/04/05 21:30:00
#Version : 1.3.0
#Use Notes : Uso: ./helix_install.sh [-u|--uninstall]
#==============================================================================
# Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>]
#==============================================================================
@ -25,6 +25,21 @@
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
# Procesamiento de parámetros
UNINSTALL=0
for arg in "$@"; do
case $arg in
-u|--uninstall)
UNINSTALL=1
shift
;;
*)
# Ignorar argumentos desconocidos
shift
;;
esac
done
# Configuración inicial
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BIN_BASE="bin"
@ -78,6 +93,98 @@ run_cmd() {
return $?
}
# Función para desinstalar Helix mediante Snap
uninstall_helix_snap() {
dialog --backtitle "${title}" --infobox "${hx_016}" 3 40
run_cmd snap remove helix
return $?
}
# Función para desinstalar Helix instalado mediante tarball
uninstall_helix_tarball() {
dialog --backtitle "${title}" --infobox "${hx_016}" 3 40
# Eliminar binario y archivos de runtime
run_cmd rm -f /usr/local/bin/hx
run_cmd rm -rf /usr/local/lib/helix
# Eliminar archivos de configuración en el directorio home del usuario
dialog --backtitle "${title}" --infobox "${hx_021}" 3 40
rm -rf ~/.config/helix
return 0
}
# Función para desinstalar Helix según el sistema operativo
uninstall_helix() {
local OS_TYPE=$(uname -s)
local DISTRO=""
local INSTALL_METHOD=""
dialog --backtitle "${title}" --infobox "${hx_022}" 3 40
# Determinar el método de desinstalación según el sistema operativo
if [[ "$OS_TYPE" == "Linux" ]]; then
if command -v apt-get &> /dev/null; then
DISTRO="Debian/Ubuntu"
# Verificar si es Ubuntu (para usar snap) o Debian
if grep -qi "ubuntu" /etc/os-release; then
# Verificar si helix está instalado por snap
if snap list 2>/dev/null | grep -q "helix"; then
INSTALL_METHOD="snap"
else
INSTALL_METHOD="tarball"
fi
else
# Para Debian generalmente se instala por tarball
INSTALL_METHOD="tarball"
fi
elif command -v pacman &> /dev/null; then
DISTRO="Arch Linux"
INSTALL_METHOD="package"
run_cmd pacman -Rns --noconfirm helix
elif command -v dnf &> /dev/null; then
DISTRO="Fedora"
INSTALL_METHOD="package"
run_cmd dnf remove -y helix
elif command -v yum &> /dev/null; then
DISTRO="CentOS/RHEL"
# Probablemente instalado por tarball
INSTALL_METHOD="tarball"
else
# Si no se reconoce el gestor de paquetes, asumir tarball
INSTALL_METHOD="tarball"
fi
elif [[ "$OS_TYPE" == "FreeBSD" ]]; then
DISTRO="FreeBSD"
INSTALL_METHOD="package"
run_cmd pkg remove -y helix
elif [[ "$OS_TYPE" == "Darwin" ]]; then
DISTRO="macOS"
INSTALL_METHOD="package"
brew uninstall helix
else
dialog_error_box "${head_error}" "${os_nofound}"
return 1
fi
# Seleccionar el método de desinstalación
if [[ "$INSTALL_METHOD" == "snap" ]]; then
uninstall_helix_snap
elif [[ "$INSTALL_METHOD" == "tarball" ]]; then
uninstall_helix_tarball
fi
# El método "package" ya se ha ejecutado para Arch, Fedora, FreeBSD y macOS
# Verificar que se desinstalara correctamente
if ! command -v hx &> /dev/null; then
return 0
else
return 1
fi
}
# Función para instalar Helix según el sistema operativo
install_helix() {
local OS_TYPE=$(uname -s)
@ -253,46 +360,89 @@ fi
clear
dialog_error_box "${hx_001}" "${hx_002}"
# Preguntar al usuario si desea continuar
dialog_yesno "${hx_009}"
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "${npm_008}"
finish
fi
# Mostrar un progress bar para indicar el avance de la instalación
(
# Inicializar progreso
echo 0; sleep 1
echo 20; echo "# ${hx_003}"
sleep 1
echo 40; echo "# ${hx_004}"
sleep 1
echo 60; echo "# ${hx_005}"
# Instalar Helix
install_helix
INSTALL_RESULT=$?
# Verificar el resultado de la instalación
if [ $INSTALL_RESULT -eq 0 ]; then
echo 90; echo "# ${hx_006}"
else
echo 90; echo "# ${hx_008}"
# Preguntar al usuario si desea instalar o desinstalar Helix
if [ $UNINSTALL -eq 1 ]; then
dialog_yesno "${hx_019}"
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "${npm_008}"
finish
fi
sleep 1
# Finalizar
echo 100
sleep 1
) | dialog --backtitle "${title}" --title "${npm_018}" --gauge "${hx_010}" 10 70 0
# Verificar la versión instalada
if command -v hx &> /dev/null; then
hx_version=$(hx --version 2>&1 | head -n 1 || echo "Desconocida")
dialog_error_box "${npm_014}" "${hx_006}\n\n${hx_007} ${hx_version}"
# Mostrar un progress bar para indicar el avance de la desinstalación
(
# Inicializar progreso
echo 0; sleep 1
echo 25; echo "# ${hx_022}"
sleep 1
echo 50; echo "# ${hx_016}"
sleep 1
echo 75; echo "# ${hx_021}"
# Desinstalar Helix
uninstall_helix
UNINSTALL_RESULT=$?
# Verificar el resultado de la desinstalación
if [ $UNINSTALL_RESULT -eq 0 ]; then
echo 90; echo "# ${hx_017}"
else
echo 90; echo "# ${hx_018}"
fi
sleep 1
# Finalizar
echo 100
sleep 1
) | dialog --backtitle "${title}" --title "${npm_026}" --gauge "${hx_020}" 10 70 0
# Verificar si la desinstalación fue exitosa
if ! command -v hx &> /dev/null; then
dialog_error_box "${npm_028}" "${hx_017}"
else
dialog_error_box "${head_error}" "${hx_018}"
fi
else
dialog_error_box "${head_error}" "${hx_008}"
# Instalación
dialog_yesno "${hx_009}"
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "${npm_008}"
finish
fi
# Mostrar un progress bar para indicar el avance de la instalación
(
# Inicializar progreso
echo 0; sleep 1
echo 20; echo "# ${hx_003}"
sleep 1
echo 40; echo "# ${hx_004}"
sleep 1
echo 60; echo "# ${hx_005}"
# Instalar Helix
install_helix
INSTALL_RESULT=$?
# Verificar el resultado de la instalación
if [ $INSTALL_RESULT -eq 0 ]; then
echo 90; echo "# ${hx_006}"
else
echo 90; echo "# ${hx_008}"
fi
sleep 1
# Finalizar
echo 100
sleep 1
) | dialog --backtitle "${title}" --title "${npm_018}" --gauge "${hx_010}" 10 70 0
# Verificar la versión instalada
if command -v hx &> /dev/null; then
hx_version=$(hx --version 2>&1 | head -n 1 || echo "Desconocida")
dialog_error_box "${npm_014}" "${hx_006}\n\n${hx_007} ${hx_version}"
else
dialog_error_box "${head_error}" "${hx_008}"
fi
fi
# Salir

View file

@ -153,21 +153,28 @@ npm_058="El token de Cortana ha sido encriptado exitosamente en"
npm_059="Falló la encriptación del token de Cortana."
npm_060="Configuración de PATH actualizada. Para aplicar cambios permanentes, reinicie su terminal después de la instalación o ejecute:"
hx_001="Instalador de Helix Editor"
hx_002="Este script instalará Helix Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."
hx_001="Gestor de Helix Editor"
hx_002="Este script permite instalar o desinstalar Helix Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."
hx_003="Descargando la última versión de Helix..."
hx_004="Instalando Helix..."
hx_005="Configurando Helix..."
hx_013="Instalando Helix mediante snap..."
hx_014="Verificando disponibilidad de snap..."
hx_015="Instalando snap..."
hx_006="Helix instalado exitosamente."
hx_007="Versión de Helix instalada:"
hx_008="Helix no se instaló correctamente."
hx_009="¿Desea instalar Helix Editor?"
hx_010="Instalación en progreso..."
hx_011="Se requiere acceso root para instalar Helix."
hx_011="Se requiere acceso root para instalar o desinstalar Helix."
hx_012="Creando directorio de destino..."
hx_013="Instalando Helix mediante snap..."
hx_014="Verificando disponibilidad de snap..."
hx_015="Instalando snap..."
hx_016="Desinstalando Helix Editor..."
hx_017="Helix desinstalado exitosamente."
hx_018="Error al desinstalar Helix."
hx_019="¿Desea desinstalar Helix Editor?"
hx_020="Desinstalación en progreso..."
hx_021="Limpiando archivos de configuración..."
hx_022="Verificando método de instalación anterior..."
zl_001="Instalador de Zettlr Markdown Editor"
zl_002="Este script instalará Zettlr Markdown Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."