[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:
parent
98bfe2e714
commit
d9b8745842
3 changed files with 205 additions and 47 deletions
|
@ -114,6 +114,7 @@ MRDevs Tools integra herramientas modernas de Charm para mejorar la experiencia
|
||||||
| Comando | Descripción |
|
| Comando | Descripción |
|
||||||
|---------|-------------|
|
|---------|-------------|
|
||||||
| `bin/helix_install.sh` | Instala Helix Editor con soporte multiplataforma (apt, snap, pacman, etc.) |
|
| `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` | 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/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 |
|
| `bin/zettlr_install.sh` | Instala Zettlr Markdown Editor con detección automática del SO |
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#Script : helix_install.sh
|
#Script : helix_install.sh
|
||||||
#Apps : MRDEVS TOOLS
|
#Apps : MRDEVS TOOLS
|
||||||
#Description : Instala Helix Editor (console)
|
#Description : Instala/Desinstala Helix Editor (console)
|
||||||
#Author : Mauro Rosero Pérez
|
#Author : Mauro Rosero Pérez
|
||||||
#Company Email : mauro@rosero.one
|
#Company Email : mauro@rosero.one
|
||||||
#Personal Email : mauro.rosero@gmail.com
|
#Personal Email : mauro.rosero@gmail.com
|
||||||
#Created : 2025/03/11 15:00:00
|
#Created : 2025/03/11 15:00:00
|
||||||
#Modified : 2025/03/19 11:57:08
|
#Modified : 2025/04/05 21:30:00
|
||||||
#Version : 1.2.0
|
#Version : 1.3.0
|
||||||
#Use Notes :
|
#Use Notes : Uso: ./helix_install.sh [-u|--uninstall]
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>]
|
# 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
|
# 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/>.
|
# 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
|
# Configuración inicial
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
BIN_BASE="bin"
|
BIN_BASE="bin"
|
||||||
|
@ -78,6 +93,98 @@ run_cmd() {
|
||||||
return $?
|
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
|
# Función para instalar Helix según el sistema operativo
|
||||||
install_helix() {
|
install_helix() {
|
||||||
local OS_TYPE=$(uname -s)
|
local OS_TYPE=$(uname -s)
|
||||||
|
@ -253,46 +360,89 @@ fi
|
||||||
clear
|
clear
|
||||||
dialog_error_box "${hx_001}" "${hx_002}"
|
dialog_error_box "${hx_001}" "${hx_002}"
|
||||||
|
|
||||||
# Preguntar al usuario si desea continuar
|
# Preguntar al usuario si desea instalar o desinstalar Helix
|
||||||
dialog_yesno "${hx_009}"
|
if [ $UNINSTALL -eq 1 ]; then
|
||||||
if [ $? -ne 0 ]; then
|
dialog_yesno "${hx_019}"
|
||||||
dialog_error_box "${head_canceled}" "${npm_008}"
|
if [ $? -ne 0 ]; then
|
||||||
finish
|
dialog_error_box "${head_canceled}" "${npm_008}"
|
||||||
fi
|
finish
|
||||||
|
|
||||||
# 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
|
fi
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# Finalizar
|
# Mostrar un progress bar para indicar el avance de la desinstalación
|
||||||
echo 100
|
(
|
||||||
sleep 1
|
# Inicializar progreso
|
||||||
) | dialog --backtitle "${title}" --title "${npm_018}" --gauge "${hx_010}" 10 70 0
|
echo 0; sleep 1
|
||||||
|
echo 25; echo "# ${hx_022}"
|
||||||
|
sleep 1
|
||||||
|
echo 50; echo "# ${hx_016}"
|
||||||
|
sleep 1
|
||||||
|
echo 75; echo "# ${hx_021}"
|
||||||
|
|
||||||
# Verificar la versión instalada
|
# Desinstalar Helix
|
||||||
if command -v hx &> /dev/null; then
|
uninstall_helix
|
||||||
hx_version=$(hx --version 2>&1 | head -n 1 || echo "Desconocida")
|
UNINSTALL_RESULT=$?
|
||||||
dialog_error_box "${npm_014}" "${hx_006}\n\n${hx_007} ${hx_version}"
|
|
||||||
|
# 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
|
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
|
fi
|
||||||
|
|
||||||
# Salir
|
# Salir
|
||||||
|
|
|
@ -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_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:"
|
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_001="Gestor de Helix Editor"
|
||||||
hx_002="Este script instalará Helix Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."
|
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_003="Descargando la última versión de Helix..."
|
||||||
hx_004="Instalando Helix..."
|
hx_004="Instalando Helix..."
|
||||||
hx_005="Configurando 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_006="Helix instalado exitosamente."
|
||||||
hx_007="Versión de Helix instalada:"
|
hx_007="Versión de Helix instalada:"
|
||||||
hx_008="Helix no se instaló correctamente."
|
hx_008="Helix no se instaló correctamente."
|
||||||
hx_009="¿Desea instalar Helix Editor?"
|
hx_009="¿Desea instalar Helix Editor?"
|
||||||
hx_010="Instalación en progreso..."
|
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_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_001="Instalador de Zettlr Markdown Editor"
|
||||||
zl_002="Este script instalará Zettlr Markdown Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."
|
zl_002="Este script instalará Zettlr Markdown Editor. Soporta Arch Linux, Debian/Ubuntu, Fedora, FreeBSD y macOS (Homebrew)."
|
||||||
|
|
Loading…
Reference in a new issue