[ADDED] Script para instalar Visual Studio Code
- Añadido script vscode_install.sh con soporte multiplataforma - Detecta automáticamente el SO y usa el método de instalación adecuado - Incluye opciones para instalación y desinstalación - Soporta Ubuntu/Debian, Fedora/RHEL, Arch Linux, macOS y FreeBSD - Utiliza diálogos interactivos cuando están disponibles 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
30900b31f2
commit
465a317801
1 changed files with 472 additions and 0 deletions
472
bin/vscode_install.sh
Executable file
472
bin/vscode_install.sh
Executable file
|
@ -0,0 +1,472 @@
|
|||
#!/bin/bash
|
||||
#Script : vscode_install.sh
|
||||
#Apps : MRDEVS TOOLS
|
||||
#Description : Instala Visual Studio Code con soporte multiplataforma
|
||||
#Author : Cortana Rosero One <cortana@rosero.one>
|
||||
#Generated : Created by Claude Code (claude-3-7-sonnet-20250219)
|
||||
#Created : 2025/04/04 10:00:00
|
||||
#Modified : 2025/04/04 10:00:00
|
||||
#Version : 1.3.1
|
||||
#Use Notes : Ejecutar sin parámetros para instalación interactiva
|
||||
# -u para desinstalar
|
||||
#==============================================================================
|
||||
# Derechos de Autor 2025 Mauro Rosero P. <mauro@rosero.one>
|
||||
#==============================================================================
|
||||
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
|
||||
# bajo los términos de la Licencia Pública Affero General de GNU tal como
|
||||
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
|
||||
# o (a su elección) cualquier versión posterior.
|
||||
#
|
||||
# Este programa se distribuye con la esperanza de que sea útil,
|
||||
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
|
||||
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
|
||||
# Licencia Pública Affero General de GNU para obtener más detalles.
|
||||
#
|
||||
# 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/>.
|
||||
|
||||
# Configuración inicial
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
BIN_BASE="bin"
|
||||
BIN_LIBS="lib"
|
||||
BIN_MESG="msg"
|
||||
BIN_LANG="head.es"
|
||||
BIN_CFGS="config"
|
||||
|
||||
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
|
||||
if [ -f "$SCRIPT_DIR/$BIN_CFGS/devspath.dat" ]; then
|
||||
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
|
||||
else
|
||||
DEVSPATH="devs"
|
||||
fi
|
||||
|
||||
# Cargar bibliotecas comunes
|
||||
if [ -f "$SCRIPT_DIR/$BIN_LIBS/base.lib" ]; then
|
||||
source "$SCRIPT_DIR/$BIN_LIBS/base.lib"
|
||||
else
|
||||
echo "Error: No se encontró la biblioteca base.lib"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Cargar mensajes en español
|
||||
if [ -f "$SCRIPT_DIR/$BIN_MESG/$BIN_LANG" ]; then
|
||||
source "$SCRIPT_DIR/$BIN_MESG/$BIN_LANG"
|
||||
else
|
||||
echo "Error: No se encontraron los archivos de mensajes"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verificar si se está solicitando la desinstalación
|
||||
UNINSTALL=0
|
||||
if [ "$1" = "-u" ]; then
|
||||
UNINSTALL=1
|
||||
fi
|
||||
|
||||
# Función para detectar el sistema operativo
|
||||
detect_os() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
OS=$NAME
|
||||
VER=$VERSION_ID
|
||||
elif [ -f /etc/lsb-release ]; then
|
||||
. /etc/lsb-release
|
||||
OS=$DISTRIB_ID
|
||||
VER=$DISTRIB_RELEASE
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
OS="Debian"
|
||||
VER=$(cat /etc/debian_version)
|
||||
elif [ -f /etc/redhat-release ]; then
|
||||
OS=$(cat /etc/redhat-release | cut -d ' ' -f 1)
|
||||
VER=$(cat /etc/redhat-release | grep -oE '[0-9]+\.[0-9]+')
|
||||
elif [ "$(uname)" == "Darwin" ]; then
|
||||
OS="macOS"
|
||||
VER=$(sw_vers -productVersion)
|
||||
elif [ "$(uname)" == "FreeBSD" ]; then
|
||||
OS="FreeBSD"
|
||||
VER=$(uname -r)
|
||||
else
|
||||
OS="Unknown"
|
||||
VER="Unknown"
|
||||
fi
|
||||
|
||||
echo "$OS"
|
||||
}
|
||||
|
||||
# Función para instalar VSCode en sistemas basados en Debian/Ubuntu
|
||||
install_vscode_debian() {
|
||||
echo -e "\n${head_info}: Instalando paquetes necesarios..."
|
||||
sudo apt update
|
||||
sudo apt install -y wget gpg apt-transport-https
|
||||
|
||||
echo -e "\n${head_info}: Descargando e instalando la clave GPG de Microsoft..."
|
||||
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
|
||||
sudo install -D -o root -g root -m 644 microsoft.gpg /etc/apt/keyrings/microsoft.gpg
|
||||
rm microsoft.gpg
|
||||
|
||||
echo -e "\n${head_info}: Configurando el repositorio de VSCode..."
|
||||
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | \
|
||||
sudo tee /etc/apt/sources.list.d/vscode.list
|
||||
|
||||
echo -e "\n${head_info}: Actualizando repositorios e instalando Visual Studio Code..."
|
||||
sudo apt update
|
||||
sudo apt install -y code
|
||||
|
||||
if command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido instalado correctamente."
|
||||
echo -e "${head_info}: Versión instalada: $(code --version | head -n 1)"
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo instalar Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para desinstalar VSCode en sistemas basados en Debian/Ubuntu
|
||||
uninstall_vscode_debian() {
|
||||
echo -e "\n${head_info}: Desinstalando Visual Studio Code..."
|
||||
sudo apt remove --purge -y code
|
||||
sudo rm -f /etc/apt/sources.list.d/vscode.list
|
||||
sudo rm -f /etc/apt/keyrings/microsoft.gpg
|
||||
sudo apt update
|
||||
|
||||
if ! command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido desinstalado correctamente."
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo desinstalar completamente Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar VSCode en sistemas basados en Red Hat (Fedora, RHEL, etc.)
|
||||
install_vscode_redhat() {
|
||||
echo -e "\n${head_info}: Instalando paquetes necesarios..."
|
||||
sudo dnf check-update
|
||||
sudo dnf install -y dnf-plugins-core
|
||||
|
||||
echo -e "\n${head_info}: Configurando el repositorio de VSCode..."
|
||||
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
|
||||
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
|
||||
|
||||
echo -e "\n${head_info}: Instalando Visual Studio Code..."
|
||||
sudo dnf install -y code
|
||||
|
||||
if command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido instalado correctamente."
|
||||
echo -e "${head_info}: Versión instalada: $(code --version | head -n 1)"
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo instalar Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para desinstalar VSCode en sistemas basados en Red Hat
|
||||
uninstall_vscode_redhat() {
|
||||
echo -e "\n${head_info}: Desinstalando Visual Studio Code..."
|
||||
sudo dnf remove -y code
|
||||
sudo rm -f /etc/yum.repos.d/vscode.repo
|
||||
|
||||
if ! command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido desinstalado correctamente."
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo desinstalar completamente Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar VSCode en Arch Linux
|
||||
install_vscode_arch() {
|
||||
echo -e "\n${head_info}: Actualizando repositorios..."
|
||||
sudo pacman -Sy
|
||||
|
||||
# Verificar si yay está instalado
|
||||
if command -v yay &>/dev/null; then
|
||||
echo -e "\n${head_info}: Instalando Visual Studio Code usando yay..."
|
||||
yay -S --noconfirm visual-studio-code-bin
|
||||
else
|
||||
echo -e "\n${head_info}: Instalando Visual Studio Code desde los repositorios oficiales..."
|
||||
# Intentar instalar el paquete oficial si está disponible
|
||||
if pacman -Si code &>/dev/null; then
|
||||
sudo pacman -S --noconfirm code
|
||||
else
|
||||
# Si no está disponible, intentar con el AUR
|
||||
echo -e "\n${head_info}: El paquete no está en los repositorios oficiales. Intentando con git..."
|
||||
sudo pacman -S --noconfirm git base-devel
|
||||
|
||||
# Directorio temporal para la compilación
|
||||
BUILD_DIR=$(mktemp -d)
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
# Clonar el paquete del AUR y compilarlo
|
||||
git clone https://aur.archlinux.org/visual-studio-code-bin.git
|
||||
cd visual-studio-code-bin
|
||||
makepkg -si --noconfirm
|
||||
|
||||
# Limpiar
|
||||
cd
|
||||
rm -rf "$BUILD_DIR"
|
||||
fi
|
||||
fi
|
||||
|
||||
if command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido instalado correctamente."
|
||||
echo -e "${head_info}: Versión instalada: $(code --version | head -n 1)"
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo instalar Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para desinstalar VSCode en Arch Linux
|
||||
uninstall_vscode_arch() {
|
||||
echo -e "\n${head_info}: Desinstalando Visual Studio Code..."
|
||||
|
||||
# Intentar desinstalar desde diferentes paquetes posibles
|
||||
if pacman -Qi visual-studio-code-bin &>/dev/null; then
|
||||
sudo pacman -R --noconfirm visual-studio-code-bin
|
||||
elif pacman -Qi code &>/dev/null; then
|
||||
sudo pacman -R --noconfirm code
|
||||
elif pacman -Qi visual-studio-code &>/dev/null; then
|
||||
sudo pacman -R --noconfirm visual-studio-code
|
||||
fi
|
||||
|
||||
if ! command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido desinstalado correctamente."
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo desinstalar completamente Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar VSCode en macOS
|
||||
install_vscode_macos() {
|
||||
echo -e "\n${head_info}: Verificando si Homebrew está instalado..."
|
||||
|
||||
if ! command -v brew &>/dev/null; then
|
||||
echo -e "\n${head_info}: Instalando Homebrew..."
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
fi
|
||||
|
||||
echo -e "\n${head_info}: Instalando Visual Studio Code mediante Homebrew..."
|
||||
brew install --cask visual-studio-code
|
||||
|
||||
if [ -d "/Applications/Visual Studio Code.app" ]; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido instalado correctamente."
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo instalar Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para desinstalar VSCode en macOS
|
||||
uninstall_vscode_macos() {
|
||||
echo -e "\n${head_info}: Desinstalando Visual Studio Code..."
|
||||
|
||||
if command -v brew &>/dev/null; then
|
||||
brew uninstall --cask visual-studio-code
|
||||
fi
|
||||
|
||||
if [ -d "/Applications/Visual Studio Code.app" ]; then
|
||||
rm -rf "/Applications/Visual Studio Code.app"
|
||||
fi
|
||||
|
||||
if [ ! -d "/Applications/Visual Studio Code.app" ]; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido desinstalado correctamente."
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo desinstalar completamente Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para instalar VSCode en FreeBSD
|
||||
install_vscode_freebsd() {
|
||||
echo -e "\n${head_info}: Actualizando repositorios..."
|
||||
sudo pkg update
|
||||
|
||||
echo -e "\n${head_info}: Instalando Visual Studio Code..."
|
||||
sudo pkg install -y vscode
|
||||
|
||||
if command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido instalado correctamente."
|
||||
echo -e "${head_info}: Versión instalada: $(code --version | head -n 1)"
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo instalar Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para desinstalar VSCode en FreeBSD
|
||||
uninstall_vscode_freebsd() {
|
||||
echo -e "\n${head_info}: Desinstalando Visual Studio Code..."
|
||||
sudo pkg remove -y vscode
|
||||
|
||||
if ! command -v code &>/dev/null; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido desinstalado correctamente."
|
||||
return 0
|
||||
else
|
||||
echo -e "\n${head_error}: No se pudo desinstalar completamente Visual Studio Code."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal para instalar VSCode
|
||||
install_vscode() {
|
||||
local os=$(detect_os)
|
||||
local result=0
|
||||
|
||||
echo -e "\n${head_info}: Sistema operativo detectado: ${os}"
|
||||
|
||||
# Instalar según el sistema operativo
|
||||
case "$os" in
|
||||
*"Ubuntu"*|*"Debian"*|*"Linux Mint"*|*"Pop!_OS"*|*"elementary OS"*)
|
||||
install_vscode_debian
|
||||
result=$?
|
||||
;;
|
||||
*"Fedora"*|*"Red Hat"*|*"CentOS"*|*"Rocky"*|*"AlmaLinux"*|*"Oracle Linux"*)
|
||||
install_vscode_redhat
|
||||
result=$?
|
||||
;;
|
||||
*"Arch"*|*"Manjaro"*|*"EndeavourOS"*|*"Garuda"*)
|
||||
install_vscode_arch
|
||||
result=$?
|
||||
;;
|
||||
*"macOS"*)
|
||||
install_vscode_macos
|
||||
result=$?
|
||||
;;
|
||||
*"FreeBSD"*)
|
||||
install_vscode_freebsd
|
||||
result=$?
|
||||
;;
|
||||
*)
|
||||
echo -e "\n${head_error}: ${os_nofound}"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Si la instalación fue exitosa, mostrar información adicional
|
||||
if [ $result -eq 0 ]; then
|
||||
echo -e "\n${head_info}: Visual Studio Code ha sido instalado correctamente."
|
||||
echo -e "${head_info}: Para iniciar VSCode, ejecute: code"
|
||||
fi
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
# Función principal para desinstalar VSCode
|
||||
uninstall_vscode() {
|
||||
local os=$(detect_os)
|
||||
local result=0
|
||||
|
||||
echo -e "\n${head_info}: Sistema operativo detectado: ${os}"
|
||||
|
||||
# Mostrar diálogo de confirmación
|
||||
if command -v dialog &>/dev/null; then
|
||||
dialog --title "${npm_031}" --yesno "${npm_032}" 8 60
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "\n${head_info}: ${npm_008}"
|
||||
return 0
|
||||
fi
|
||||
else
|
||||
read -p "${npm_032} (s/n): " CONFIRM
|
||||
if [[ ! "$CONFIRM" =~ ^[Ss]$ ]]; then
|
||||
echo -e "\n${head_info}: ${npm_008}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# Desinstalar según el sistema operativo
|
||||
case "$os" in
|
||||
*"Ubuntu"*|*"Debian"*|*"Linux Mint"*|*"Pop!_OS"*|*"elementary OS"*)
|
||||
uninstall_vscode_debian
|
||||
result=$?
|
||||
;;
|
||||
*"Fedora"*|*"Red Hat"*|*"CentOS"*|*"Rocky"*|*"AlmaLinux"*|*"Oracle Linux"*)
|
||||
uninstall_vscode_redhat
|
||||
result=$?
|
||||
;;
|
||||
*"Arch"*|*"Manjaro"*|*"EndeavourOS"*|*"Garuda"*)
|
||||
uninstall_vscode_arch
|
||||
result=$?
|
||||
;;
|
||||
*"macOS"*)
|
||||
uninstall_vscode_macos
|
||||
result=$?
|
||||
;;
|
||||
*"FreeBSD"*)
|
||||
uninstall_vscode_freebsd
|
||||
result=$?
|
||||
;;
|
||||
*)
|
||||
echo -e "\n${head_error}: ${os_nofound}"
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Si la desinstalación fue exitosa, mostrar mensaje
|
||||
if [ $result -eq 0 ]; then
|
||||
echo -e "\n${head_success}: Visual Studio Code ha sido desinstalado correctamente."
|
||||
fi
|
||||
|
||||
return $result
|
||||
}
|
||||
|
||||
# Mostrar encabezado
|
||||
echo -e "\n=== ${npm_018} ==="
|
||||
|
||||
# Verificar si VSCode ya está instalado
|
||||
if command -v code &>/dev/null; then
|
||||
CODE_VERSION=$(code --version | head -n 1)
|
||||
echo -e "\n${npm_019}"
|
||||
echo "Visual Studio Code: $CODE_VERSION"
|
||||
|
||||
# Si se solicita desinstalación
|
||||
if [ $UNINSTALL -eq 1 ]; then
|
||||
uninstall_vscode
|
||||
else
|
||||
# Si ya está instalado y no se solicita desinstalación, preguntar qué hacer
|
||||
if command -v dialog &>/dev/null; then
|
||||
dialog --title "${npm_031}" --yesno "Visual Studio Code ya está instalado (versión $CODE_VERSION).\n¿Desea reinstalarlo?" 8 60
|
||||
REINSTALL=$?
|
||||
if [ $REINSTALL -eq 0 ]; then
|
||||
uninstall_vscode && install_vscode
|
||||
fi
|
||||
else
|
||||
read -p "Visual Studio Code ya está instalado (versión $CODE_VERSION). ¿Desea reinstalarlo? (s/n): " REINSTALL
|
||||
if [[ "$REINSTALL" =~ ^[Ss]$ ]]; then
|
||||
uninstall_vscode && install_vscode
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Si no está instalado
|
||||
if [ $UNINSTALL -eq 1 ]; then
|
||||
echo -e "\n${head_info}: Visual Studio Code no está instalado. Nada que hacer."
|
||||
else
|
||||
# Mostrar diálogo de confirmación para instalar
|
||||
if command -v dialog &>/dev/null; then
|
||||
dialog --title "${npm_031}" --yesno "${npm_033}" 8 60
|
||||
if [ $? -eq 0 ]; then
|
||||
install_vscode
|
||||
else
|
||||
echo -e "\n${head_info}: ${npm_008}"
|
||||
fi
|
||||
else
|
||||
read -p "${npm_033} (s/n): " CONFIRM
|
||||
if [[ "$CONFIRM" =~ ^[Ss]$ ]]; then
|
||||
install_vscode
|
||||
else
|
||||
echo -e "\n${head_info}: ${npm_008}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo -e "\n=== ${npm_021} ==="
|
Loading…
Reference in a new issue