194663a379
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.
124 lines
4.2 KiB
Bash
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
|