[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 |
|
||||
|---------|-------------|
|
||||
| `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 |
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)."
|
||||
|
|
Loading…
Reference in a new issue