devs/bin/bootstrap.sh
Mauro Rosero P. 7e262bb94a
[IMPROVED] Añadir instalación independiente de oathtool y zbar en bootstrap.sh
- Implementar funciones oathtool_install() y zbar_install() en bootstrap.lib
- Modificar bootstrap.sh para aceptar parámetros --oathtool y --zbar
- Permitir instalar paquetes específicos sin instalar todo el conjunto
- Adaptar la función install() para manejar instalaciones específicas
- Mantener compatibilidad con el modo de instalación completa

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-15 19:00:48 -05:00

228 lines
5.3 KiB
Bash
Executable file

#!/bin/bash
#
# bootstrap.sh
# Modified: 2025/03/15 16:30:00
# Derechos de Autor (C) [2025] [Mauro Rosero P. <mauro@roser.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/>.
DEVSPATH=devs
BIN_HOME=$HOME/$DEVSPATH
BIN_MESG=bin/msg
BIN_LIBS=bin/lib
# CHECK SHELL LANGUAGE
BIN_LANG=${LANG:0:2}
# LOAD BASE BASH LIBRARY
source $BIN_HOME/$BIN_LIBS/base.lib
#baselib_test
load_bootstrap_msg() {
local BIN_PATH=$1
local MSG_PATH=$2
local LANGUAGE=$3
# Load head messages
load_messages $BIN_PATH $MSG_PATH $LANGUAGE "head"
# Load bootstrap messages
load_messages $BIN_PATH $MSG_PATH $LANGUAGE "bootstrap"
}
install() {
local BIN_PATH=$1
local LIBRARY=$2
local MESSAGES=$3
local INSTALL_LANG=$4
local PACKAGE_ONLY=$5 # Paquete específico a instalar (opcional)
local PYTHON_PACKAGE=python3
local GIT_PACKAGE=git
local CURL_PACKAGE=curl
local WGET_PACKAGE=wget
local DIALOG_PACKAGE=dialog
local SOPS_PACKAGE=sops
local GNUPG_PACKAGE=gnupg
local ZIP_PACKAGE=zip
local SQLITE_COMMAND=sqlite3
local SQLITE_PACKAGE="$SQLITE_COMMAND libsqlite3-dev"
local ANSIBLE_COMMAND=ansible
local ANSIBLE_PACKAGE="$ANSIBLE_COMMAND"
local OATHTOOL_PACKAGE=oathtool
local ZBAR_PACKAGE=zbar
# Load base bash library
BIN_HOME=$BIN_PATH
source $BIN_PATH/$LIBRARY/base.lib
# Load bootstrap bash library
source $BIN_PATH/$LIBRARY/bootstrap.lib
# Load bootstrap messages
load_bootstrap_msg $BIN_PATH $MESSAGES $INSTALL_LANG
# Si se especificó un paquete específico, instalar solo ese
if [ -n "$PACKAGE_ONLY" ]; then
case "$PACKAGE_ONLY" in
"oathtool")
# Instalar oathtool
command_installed $OATHTOOL_PACKAGE
if [ $? -ne 0 ]; then
oathtool_install
fi
return 0
;;
"zbar")
# Instalar zbar
command_installed $ZBAR_PACKAGE
if [ $? -ne 0 ]; then
zbar_install
fi
return 0
;;
*)
echo "Paquete '$PACKAGE_ONLY' no reconocido o no soportado."
return 1
;;
esac
fi
# Install wget from OS Packages
command_installed $WGET_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $WGET_PACKAGE
fi
# Install curl from OS Packages
command_installed $CURL_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $CURL_PACKAGE
fi
# Install git from OS Packages
command_installed $GIT_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $GIT_PACKAGE
fi
# Install gnupg from OS Packages
command_installed $GNUPG_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $GNUGP_PACKAGE
fi
# Install dialog from OS Packages
command_installed $DIALOG_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $DIALOG_PACKAGE
fi
# Install zip from OS Packages
command_installed $ZIP_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $ZIP_PACKAGE
fi
# Install sqlite3 from OS Packages
command_installed $SQLITE_COMMAND
if [ $? -ne 0 ]
then
os_pkgs_install $SQLITE_PACKAGE
fi
# Install python from OS Packages
command_installed $PYTHON_PACKAGE
if [ $? -ne 0 ]
then
python3_install
fi
# Verificar si pip está instalado, instalarlo si es necesario
command_installed pip3
if [ $? -ne 0 ]
then
pip_install
fi
# Install mozilla sops from OS Packages
command_installed $SOPS_PACKAGE
if [ $? -ne 0 ]
then
sops_install
fi
# Install ansible from OS Packages
command_installed $ANSIBLE_COMMAND
if [ $? -ne 0 ]
then
os_pkgs_install $ANSIBLE_PACKAGE
fi
# Check for container management installed and install podman
container_mode
if [ $? -eq 255 ]
then
# Install podman
podman_install
elif [ $? -eq 1 ]
then
echo "$domsg_005"
fi
}
# Load messages
load_bootstrap_msg $BIN_HOME $BIN_MESG $BIN_LANG
# Procesar argumentos
PACKAGE_TO_INSTALL=""
if [ $# -ge 1 ]; then
case "$1" in
"--oathtool")
PACKAGE_TO_INSTALL="oathtool"
display_devstools_header "- Instalación de oathtool"
;;
"--zbar")
PACKAGE_TO_INSTALL="zbar"
display_devstools_header "- Instalación de zbar"
;;
*)
display_devstools_header "- $bomsg_000"
;;
esac
else
display_devstools_header "- $bomsg_000"
fi
# Run install with sudo
sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG '$PACKAGE_TO_INSTALL'"
result=$?
# Run install ansible with regular user
#if [ $result -eq 0 ]
#then
# Load bootstrap bash library
# source $BIN_HOME/$BIN_LIBS/bootstrap.lib
# ansible_install
#fi