Files
egutierrez 194663a379 feat: add bash infra installer and diagnostic functions
10 funciones Bash del dominio infra: instaladores de herramientas de desarrollo
(install_go, install_nodejs, install_pnpm, install_python312, install_uv,
install_volta, install_wails), diagnostico del sistema (analyze_disk_space,
detect_wsl, list_listening_ports). Automatizan la configuracion del entorno
de desarrollo en Linux/WSL.
2026-04-12 13:54:21 +02:00

124 lines
4.2 KiB
Bash

#!/usr/bin/env bash
# install_wails
# -------------
# Instala Wails v2 — framework para aplicaciones de escritorio en Go.
# Detecta la distribución Linux e instala las dependencias de sistema necesarias
# (GTK3, WebKit2GTK, build tools) y luego instala el CLI de Wails via go install.
#
# USO:
# source install_wails.sh
# install_wails
install_wails() {
echo "Instalando Wails..."
echo ""
# Verificar Go
if ! command -v go &>/dev/null; then
echo "install_wails: Go no está instalado (requerido)" >&2
echo " Instálalo primero con install_go" >&2
return 1
fi
local go_version
go_version="$(go version)"
echo "Go detectado: ${go_version}"
echo ""
# Detectar distribución
local distro="unknown"
if [[ -f /etc/os-release ]]; then
# shellcheck disable=SC1091
distro="$(. /etc/os-release && echo "${ID:-unknown}")"
else
echo "install_wails: no se pudo detectar la distribución de Linux" >&2
return 1
fi
echo "Instalando dependencias del sistema para ${distro}..."
case "$distro" in
ubuntu|debian|linuxmint|pop)
sudo apt update
if ! sudo apt install -y libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config; then
echo "install_wails: falló la instalación de dependencias de sistema" >&2
return 1
fi
;;
fedora|rhel|centos)
if ! sudo dnf install -y gtk3-devel webkit2gtk3-devel gcc-c++ pkgconfig; then
echo "install_wails: falló la instalación de dependencias de sistema" >&2
return 1
fi
;;
arch|manjaro)
if ! sudo pacman -Sy --noconfirm gtk3 webkit2gtk base-devel; then
echo "install_wails: falló la instalación de dependencias de sistema" >&2
return 1
fi
;;
opensuse*)
if ! sudo zypper install -y gtk3-devel webkit2gtk3-devel gcc-c++ pkg-config; then
echo "install_wails: falló la instalación de dependencias de sistema" >&2
return 1
fi
;;
*)
echo "Distribución no reconocida: ${distro}"
echo "Instala manualmente: gtk3, webkit2gtk, build-essential, pkg-config"
echo "Continuando con la instalación de Wails CLI..."
;;
esac
echo ""
echo "Instalando Wails CLI (go install github.com/wailsapp/wails/v2/cmd/wails@latest)..."
if ! go install github.com/wailsapp/wails/v2/cmd/wails@latest; then
echo "install_wails: falló la instalación del CLI de Wails" >&2
return 1
fi
# Asegurar que $GOPATH/bin esté en PATH
if [[ ":$PATH:" != *":$HOME/go/bin:"* ]]; then
local shell_config=""
if [[ -f "$HOME/.bashrc" ]]; then
shell_config="$HOME/.bashrc"
elif [[ -f "$HOME/.zshrc" ]]; then
shell_config="$HOME/.zshrc"
fi
if [[ -n "$shell_config" ]]; then
if ! grep -q 'export PATH=\$PATH:\$HOME/go/bin' "$shell_config" 2>/dev/null; then
{
echo ""
echo "# Go binaries"
echo 'export PATH=$PATH:$HOME/go/bin'
} >> "$shell_config"
echo "PATH de Go añadido a ${shell_config}"
fi
fi
export PATH="$PATH:$HOME/go/bin"
fi
echo ""
# Verificar instalación
if command -v wails &>/dev/null; then
local wails_version
wails_version="$(wails version 2>/dev/null || echo "instalado")"
echo "Wails instalado correctamente: ${wails_version}"
echo ""
echo "Comandos básicos de Wails:"
echo " wails init -n myapp -t vanilla - Crear proyecto"
echo " wails dev - Modo desarrollo"
echo " wails build - Build producción"
echo " wails doctor - Verificar instalación"
else
echo "Wails instalado pero no está en PATH."
echo " Reinicia tu terminal o ejecuta: source ~/.bashrc"
fi
}
# Ejecutar si se invoca directamente
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
install_wails "$@"
fi