#!/bin/bash #Script : bootstrap.sh #Apps : MRDEVS TOOLS #Description : Inicialización de Ambiente de Desarrollo #Author : Mauro Rosero Pérez #Company Email : mauro@rosero.one #Personal Email : mauro.rosero@gmail.com #Created : 2025/03/19 11:57:08 #Modified : 2025/03/30 16:30:00 #Version : 1.3.0 #Use Notes : #============================================================================== # Derechos de Autor [2025] [Mauro Rosero P. ] #============================================================================== # 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 . # Configuración inicial SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then DEVSPATH=$(cat "$SCRIPT_DIR/config/devspath.dat") else DEVSPATH="devs" fi BIN_HOME="$HOME/$DEVSPATH" BIN_BASE="bin" BIN_LIBS="lib" BIN_MESG="msg" BIN_CFGS="config" VERSION=$(cat "$SCRIPT_DIR/$BIN_CFGS/version") # CHECK SHELL LANGUAGE BIN_LANG=${LANG:0:2} # Importar bibliotecas necesarias source "${SCRIPT_DIR}/${BIN_LIBS}/base.lib" # Cargar mensajes en el idioma del sistema o español por defecto load_messages "${SCRIPT_DIR}" "${BIN_MESG}" "${BIN_LANG}" "head" # Variables globales title="${head_000} ${head_002}" 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 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 local REDIS_CLI_PACKAGE=redis-tools # 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 # 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 full Python package even if basic Python is already installed command_installed python3-full if [ $? -ne 0 ] then # Si python3-full no está instalado, instalarlo python3_install else # Si ya está python3 básico pero queremos asegurar que python3-full esté instalado command_installed $PYTHON_PACKAGE if [ $? -eq 0 ] then echo "Asegurando instalación completa de Python..." if [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then apt update apt install -y python3-full fi fi fi # Verificar si pip está instalado, instalarlo si es necesario command_installed pip3 if [ $? -ne 0 ] then pip_install fi # Verificar si pipx está instalado, instalarlo si es necesario command_installed pipx if [ $? -ne 0 ] then pipx_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 # Install oathtool if not already installed command_installed oathtool if [ $? -ne 0 ] then echo "Instalando oathtool..." oathtool_install fi # Install zbar if not already installed command_installed zbar-tools if [ $? -ne 0 ] then echo "Instalando zbar..." zbar_install fi # Install redis-cli if not already installed command_installed redis-cli if [ $? -ne 0 ] then echo "Instalando redis-cli..." os_pkgs_install $REDIS_CLI_PACKAGE fi } # Load messages load_bootstrap_msg $SCRIPT_DIR $BIN_MESG $BIN_LANG # Display Headers display_devstools_header "- $bomsg_000" # Run install with sudo (sin parámetros específicos) sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $SCRIPT_DIR $BIN_LIBS $BIN_MESG $BIN_LANG"