[IMPROVED] bootstrap.sh - Instalar herramientas base y podman

This commit is contained in:
Mauro Rosero P. 2024-12-08 00:11:04 -05:00
parent e59aec4a57
commit b86ad06bb9
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
8 changed files with 1046 additions and 2 deletions

View file

@ -1,3 +1,22 @@
# devs
# AMBIENTE LOCAL PARA DESARROLLADORES (MRDEVS TOOLS)
## GUÍA PARA DESARROLLADORES - REV. 30/11/2024
Ambiente de Desarrollo
### REQUISITOS DE INSTALACIÓN
(Pendiente)
### PREPARACIÓN DE AMBIENTE LOCAL PARA DESARROLLADORES
#### Creación del área local de trabajo para desarrolladores
En la carpeta $HOME descargue el repositorio devs (la carpeta no debe existir):
$ cd $HOME
$ git clone https://git.rosero.one/mrosero/devs.git
#### Instalación de herramientas para gestión de contenedores
A partir de este momento, la carpeta $HOME/devs será nuestra área de desarrollo donde se descargaran los diversos ambientes de desarrollo. Como primer paso instalaremos las herramientas básicas y de gestión de contenedores. Por razones de seguridad, priorizamos el uso de **podman**.
$ cd $HOME/devs
$ bin/bootstrap.sh

122
bin/bootstrap.sh Executable file
View file

@ -0,0 +1,122 @@
#!/bin/bash
#
# bootstrap.sh
# Modified: 2024/12/01 15:27:00
# Derechos de Autor (C) [2024] [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 PYTHON_PACKAGE=python3
local GIT_PACKAGE=git
local CURL_PACKAGE=curl
local WGET_PACKAGE=wget
local DIALOG_PACKAGE=dialog
# Load base bash library
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 dialog from OS Packages
command_installed $DIALOG_PACKAGE
if [ $? -ne 0 ]
then
os_pkgs_install $DIALOG_PACKAGE
fi
# Install python from OS Packages
command_installed $PYTHON_PACKAGE
if [ $? -ne 0 ]
then
python3_install
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
# Display Headers
display_devstools_header "- $bomsg_000"
# Run install with sudo
sudo bash -c "$(declare -f load_bootstrap_msg; declare -f install); install $BIN_HOME $BIN_LIBS $BIN_MESG $BIN_LANG"

337
bin/lib/base.lib Normal file
View file

@ -0,0 +1,337 @@
#!/bin/bash
#
# Library: base.lib
# Modified: 2024/11/30 15:27:00
# Derechos de Autor (C) [2024] [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/>.
DEVS_NAME=config/project.head
GIT_IGNORE=.gitignore
DOCKER_LOCAL=dockerfile.local
DOCKER_BASE=dockerfile.base
DOCKER_SAAS=dockerfile.saas
DOCKER_BUILD=build
DOCKER_FILE=Dockerfile
DOCKER_ENTRY=entrypoint.sh
# Test library
function baselib_test() {
echo "Base Library loaded!"
exit 1
}
# Load messages
function load_messages() {
local BIN_PATH=$1
local MSG_PATH=$2
local LANGUAGE=$3
local MSG_FILE=$4
if [ -f $BIN_PATH/$MSG_PATH/$MSG_FILE.$LANGUAGE ]
then
source $BIN_PATH/$MSG_PATH/$MSG_FILE.$LANGUAGE
else
source $BIN_PATH/$MSG_PATH/$MSG_FILE.es
fi
}
# Display developers tools header
function display_devstools_header() {
local tittle=$1
clear
echo "$head_000 $head_002 $tittle"
echo "============================================================"
}
# Display text header apps
function display_text_header() {
local PROJECT=$1
local tittle=$2
clear
echo "$(cat < $PROJECT/config/project.head) $tittle"
echo "============================================================"
}
# Verify if your program or command is installed
function command_installed() {
local PROGRAM=$1
if command -v $PROGRAM &> /dev/null; then
return 0
fi
# No program or command is installed
return 1
}
# Install os packages
function os_pkgs_install() {
local PACKAGE=$1
echo "${pkg_install_begin} ${PACKAGE}"
if [ "$(uname)" == "Darwin" ]; then
# En macOS, a través de Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install $PACKAGE
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
# En sistemas Debian y derivados, a través de apt
apt update
apt install -y $PACKAGE
elif [ -f /etc/redhat-release ]; then
# En sistemas Red Hat y derivados, a través de dnf
dnf install -y $PACKAGE
elif [ -f /etc/arch-release ]; then
# En Arch Linux, a través de pacman
pacman -Sy --noconfirm $PACKAGE
elif [ -f /etc/rc.conf ]; then
# En BSD, a través de pkg
pkg install -y $PACKAGE
else
echo "${os_nofound}"
exit 1
fi
echo "${pkg_install_success} ${PACKAGE}"
}
# Update or upgrade OS Packages
function os_update() {
if [ "$(uname)" == "Darwin" ]; then
echo "$os_update (BREW)"
brew upgrade
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
echo "$os_update (APT)"
apt update && apt upgrade -y
elif [ -f /etc/redhat-release ]; then
echo "$os_update (DNF)"
dnf update -y
elif [ -f /etc/arch-release ]; then
echo "$os_update (PACMAN)"
pacman -Syu
elif [ -f /etc/rc.conf ]; then
echo "$os_update (PKG)"
pkg update && pkg upgrade
else
echo "${os_nofound}"
exit 1
fi
}
# Check for container manager installed
function container_mode() {
command_installed "podman"
if [ $? -eq 0 ]
then
return 0
else
command_installed "docker"
if [ $? -eq 0 ]
then
return 1
fi
fi
# Exit with code 255 if not docker or podman installed
return 255
}
# Git init repository
function git_init() {
local REPO_PATH=$1
local BRANCH=$2
git init "$REPO_PATH" -b $BRANCH
return $?
}
# Git add tracked files to repository
function git_add_full() {
local REPO_PATH=$1
cd $REPO_PATH
if [ $? -eq 0 ]; then
git add .
return $?
else
return 255
fi
}
# Git add tracked files to repository
function git_commit() {
local REPO_PATH=$1
local GIT_MESSAGES=$2
cd $REPO_PATH
if [ $? -eq 0 ]; then
git commit -m "$GIT_MESSAGES"
return $?
else
return 255
fi
}
# Git new remote project repository
function git_new_project() {
local REPO_PATH=$1
local REMOTE_PATH=$2
local GIT_PROJECT=$3
local BRANCH=$4
local REPO_REMOTE=$(printf "$REMOTE_PATH" "${GIT_PROJECT}")
echo "$REPO_REMOTE"
if [ -d $REPO_PATH ]
then
cd $REPO_PATH
if [ $? -eq 0 ]; then
git remote add origin $REPO_REMOTE
if [ $? -eq 0 ]; then
git checkout $BRANCH
if [ $? -eq 0 ]; then
git push --set-upstream origin $BRANCH
return $?
else
return 254
fi
fi
fi
fi
return 255
}
# Git clone repository
function git_clone_pull() {
local REPO_PATH=$1
local REPO_REMOTE=$2
local APPS=$3
local BRANCH=$4
if [ ! -d $REPO_PATH/$APPS ]
then
cd $REPO_PATH
if [ $? -eq 0 ]; then
git clone $REPO_REMOTE -b $BRANCH $APPS
return $?
else
return 255
fi
else
cd $REPO_PATH/$APPS
if [ $? -eq 0 ]; then
git pull
return $?
else
return 255
fi
fi
}
# Check for valid os system
function get_osname() {
if [ "$(uname)" == "Darwin" ]; then
# En macOS, instalamos o actualizamos a través de Homebrew
os_name=$(sw_vers -productVersion | awk -F '.' '{print "macOS " $1 "." $2}')
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
# En sistemas Debian y derivados, instalamos o actualizamos a través de apt
os_name=$(grep "^ID_LIKE=" /etc/os-release | cut -d= -f2)
if grep -qi "${head_ubuntu}" /etc/os-release
then
os_name="${head_ubuntu}"
fi
elif [ -f /etc/redhat-release ]; then
# En sistemas Red Hat, instalamos o actualizamos a través de dnf
os_name=$(awk '{print $1}' /etc/redhat-release)
elif [ -f /etc/arch-release ]; then
# En Arch Linux, instalamos o actualizamos a través de pacman
os_name=$(grep '^NAME=' /etc/os-release | awk -F '"' '{print $2}')
elif [ -f /etc/rc.conf ]; then
# En BSD, instalamos o actualizamos a través de pkg
os_name=$(awk '{print $2}' /etc/version | awk -F '-' '{print $1}')
else
os_name="${head_unknow}"
fi
}
function docker_build() {
local CONTAINER=$1
local BASE_IMAGE=$2
docker build ./build -t ${CONTAINER} --build-arg BASE_IMAGE=${BASE_IMAGE}
return $?
}
function podman_build() {
local CONTAINER=$1
local BASE_IMAGE=$2
local registry_path=~/.config/containers
if [ ! -d ${registry_path} ]
then
mkdir ${registry_path}
fi
echo 'unqualified-search-registries = ["docker.io"]' > "${registry_path}/registries.conf"
podman build ./build -t ${CONTAINER} --format docker --build-arg BASE_IMAGE=${BASE_IMAGE}
return $?
}
function build_container() {
local CONTAINER=$1
local BASE_IMAGE=$2
# Verificar si Docker está instalado
if command -v docker &> /dev/null
then
docker_build "$CONTAINER" "$BASE_IMAGE"
return $?
fi
# Verificar si Podman está instalado
if command -v podman &> /dev/null
then
podman_build "$CONTAINER" "$BASE_IMAGE"
return $?
fi
return 1
}

78
bin/lib/bootstrap.lib Executable file
View file

@ -0,0 +1,78 @@
#!/bin/bash
#
# Library: $HOME/devs/bin/lib/bootstrap.lib
# Modified: 2024/11/30 15:27:00
# Derechos de Autor (C) [2024] [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/>.
# Install python3 package
function python3_install() {
echo "${pymsg_001}"
if [ "$(uname)" == "Darwin" ]; then
# En macOS, instalamos o actualizamos Python a través de Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python python-pip
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
# En sistemas Debian y derivados, instalamos o actualizamos Python a través de apt
apt update
apt install -y python3 python3-pip
elif [ -f /etc/redhat-release ]; then
# En sistemas Red Hat, instalamos o actualizamos Python a través de yum
dnf install -y python3 python3-pip
elif [ -f /etc/arch-release ]; then
# En Arch Linux, instalamos o actualizamos Python a través de pacman
pacman -Sy --noconfirm python
elif [ -f /etc/rc.conf ]; then
# En BSD, instalamos o actualizamos Python a través de pkg
pkg install -y python3 python3-pip
else
echo "${os_nofound}"
exit 1
fi
echo "${pymsg_003}"
}
# Install podman package
function podman_install() {
echo "${pdmsg_001}"
if [ "$(uname)" == "Darwin" ]; then
# En macOS, instalamos o actualizamos Python a través de Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew tap containers/podman
brew install podman
elif [ -f /etc/debian_version ] || [ -f /etc/os-release ]; then
# En sistemas Debian y derivados, instalamos o actualizamos Python a través de apt
apt update
apt install -y podman podman-compose
elif [ -f /etc/redhat-release ]; then
# En sistemas Red Hat, instalamos o actualizamos Python a través de dnf
dnf install -y epel-release
dnf install -y podman podman-compose
elif [ -f /etc/arch-release ]; then
# En Arch Linux, instalamos o actualizamos Python a través de pacman
pacman -Sy --noconfirm podman podman-compose fuse-overlayfs
elif [ -f /etc/rc.conf ]; then
# En BSD, instalamos o actualizamos Python a través de pkg
pkg install -y podman-suite
else
echo "${os_nofound}"
exit 1
fi
echo "${pdmsg_003}"
}

378
bin/lib/console.lib Executable file
View file

@ -0,0 +1,378 @@
#!/bin/bash
#
# Library: console.lib
# Modified: 2024/12/04 12:27:00
# Derechos de Autor (C) [2024] [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/>.
# Global Default Variables
CWIDTH=70
CROWS=8
CX=4
CY=2
# Test console library
function consolelib_test() {
echo "Console Library loaded!"
}
# Dialog Yes/No Question
function dialog_yesno() {
local label="$1"
local rows="${2:-$CROWS}"
local width="${3:-$CWIDTH}"
dialog --keep-window --begin ${CX} ${CY} --colors --no-shadow --backtitle "${title}" --title "${apps_title}" --yesno "\n${label}" ${rows} ${width}
result=$?
return ${result}
}
# Dialog Input Box
function dialog_input_box() {
local label="$1"
local helper="$2"
local v_default="$3"
local rows="${4:-$CROWS}"
local width="${5:-$CWIDTH}"
exec 3>&1;
value=$(dialog --keep-window --begin ${CX} ${CY} --colors --no-shadow --backtitle "${title}" --title "${apps_title}" --inputbox "\n${label}\n${helper}" ${rows} ${width} "${v_default}" 2>&1 1>&3);
codex=$?;
exec 3>&-;
return ${codex}
}
# Dialog Password Box
function dialog_input_pass(){
local label="$1"
local helper="$2"
local v_default="$3"
local rows="${4:-$CROWS}"
local width="${5:-$CWIDTH}"
exec 3>&1;
value=$(dialog --keep-window --begin ${CX} ${CY} --colors --no-shadow --backtitle "${title}" --title "${apps_title}" --passwordbox "\n${label}\n${helper}" ${rows} ${width} "${v_default}" 2>&1 1>&3);
codex=$?;
exec 3>&-;
return ${codex}
}
# Dialog Radio List
function dialog_input_radio() {
local label="$1"
local helper="$2"
local options="$3"
local rows="${4:-$CROWS}"
local width="${5:-$CWIDTH}"
# Calcular el número de elementos
local elements=$(echo "$options" | awk '{print NF/3 + 1}')
((rows += elements))
exec 3>&1;
value=$(dialog --keep-window --begin ${CX} ${CY} --colors --no-shadow --backtitle "${title}" --title "${apps_title}" --radiolist "\n${label}\n${helper}" ${rows} ${width} ${elements} ${options} 2>&1 1>&3)
codex=$?
exec 3>&-;
return ${codex}
}
# Dialog Menu Select
function dialog_input_menu() {
local label="$1"
local helper="$2"
local options="$3"
local rows="${4:-$CROWS}"
local width="${5:-$CWIDTH}"
# Calcular el número de elementos
local elements=$(echo "$options" | awk '{print NF/2 + 1}')
((rows += elements))
exec 3>&1;
value=$(dialog --keep-window --begin ${CX} ${CY} --colors --no-shadow --backtitle "${title}" --title "${apps_title}" --menu "\n${label}\n${helper}" ${rows} ${width} ${elements} ${options} 2>&1 1>&3)
codex=$?
exec 3>&-;
return ${codex}
}
# Dialog Select File Box Input
function dialog_input_filepath() {
local valid_file="0"
local file_path=$1
while [ "$valid_file" == "0" ]
do
exec 3>&1;
result=$(dialog --begin 2 2 --title "${apps_title} - $2" --backtitle "${title}" --fselect ${file_path} 7 0 2>&1 1>&3);
exitcode=$?;
exec 3>&-;
if [ "$exitcode" == "0" ]
then
if [ -f "$result" ]
then
file_path=${result}
valid_file="1"
fi
else
valid_file="2"
fi
done
}
# Dialog Error Box
function dialog_error_box() {
local msgtype="$1"
local message="$2"
# Redirigir la salida de error al descriptor de archivo 3
exec 3>&1;
# Mostrar el cuadro de diálogo
dialog --backtitle "${title}" --title "${msgtype} - ${apps_title}" --msgbox "\n${message}" 8 ${CWIDTH}
#dialog --and-widget --msgbox "\n${message}"
exec 3>&-;
}
# Dialog Validation for input
function dialog_validate_input() {
local value="$2"
local label="$3"
local valid_data="$4"
local email_regex='^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'
local gpg_duration_regex="^[0-9]+([dmy])?$"
local domain_regex="^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9]+[a-zA-Z0-9-]*[a-zA-Z0-9]+))(\.([a-zA-Z]{2,})){1,}$"
# Verificar si se proporcionó un argumento
if [ $# -ne 0 ]; then
# Convertir el argumento en un array
arr=($1)
# Iterar sobre el array y llamar a process_element para cada elemento
for vcode in "${arr[@]}"
do
case ${vcode} in
000)
return 0
;;
001)
if [ -z "${value}" ]
then
dialog_error_box "${head_error}" "${label} ${vldt_001}"
return 1
fi
;;
010)
if [[ ! "${value}" =~ ${email_regex} ]]
then
dialog_error_box "${head_error}" "${vldt_010}"
return 1
fi
;;
011)
if [[ ! "${value}" =~ ${gpg_duration_regex} ]]
then
dialog_error_box "${head_error}" "${vldt_011}"
return 1
fi
;;
012)
if [[ ! "${value}" =~ ${domain_regex} ]]
then
dialog_error_box "${head_error}" "${vldt_012}"
return 1
fi
;;
013)
local -a elements=(${valid_data})
for item in "${elements[@]}"
do
if [[ "$item" == "$value" ]]
then
return 0
fi
done
dialog_error_box "${head_error}" "${vldt_013} ${valid_data}"
return 1
;;
014)
local -a rangos=($valid_data)
if [ $((value)) -ge ${rangos[0]} ] && [ $((value)) -le ${rangos[0]} ]
then
return 0
fi
dialog_error_box "${head_error}" "${vldt_014} ${rangos[0]} y ${rangos[1]}"
return 1
;;
esac
done
fi
return 0
}
# Dialog data input form
function dialog_form() {
# Ciclo de captura de datos
clear
control=0
while [ ${control} -lt ${c_end} ]
do
case ${c_mod[control]} in
1)
dialog_input_box "[${control}] ${c_lbl[control]}" "${c_hlp[control]}" "${c_def[control]}"
if [ ${codex} -eq 0 ]
then
dialog_validate_input "${c_val[control]}" "${value}" "${c_lbl[control]}" "${c_dat[control]}"
if [ $? -eq 0 ]
then
response[control]="${value}"
((control++))
fi
else
case ${codex} in
1)
if [ ${control} -gt 0 ]
then
((control--))
else
control=${c_end}
return 1
fi
;;
255)
return 1
control=${c_end}
;;
esac
fi
;;
2)
dialog_input_pass "[${control}] ${c_lbl[control]}" "${c_hlp[control]}"
if [ ${codex} -eq 0 ]
then
response[control]="${value}"
dialog_input_pass "[${control}] ${c_lbl[control]} ${head_confirm}" "${c_hlp[control]}"
if [ ${codex} -eq 0 ]
then
if [ "${response[control]}" == "${value}" ] && [ ! -z "${response[control]}" ]
then
((control++))
sleep 1
else
dialog_error_box "${head_error}" "${vldt_002}"
fi
else
if [ ${codex} -eq 255 ]
then
control=${c_end}
return 1
fi
fi
else
case ${codex} in
1)
if [ ${control} -gt 0 ]
then
((control--))
else
control=${c_end}
return 1
fi
;;
255)
return 1
control=${c_end}
;;
esac
fi
;;
3)
dialog_input_radio "[${control}] ${c_lbl[control]}" "${c_hlp[control]}" "${c_opt[control]}"
if [ ${codex} -eq 0 ]
then
response[control]="${value}"
((control++))
else
case ${codex} in
1)
if [ ${control} -gt 0 ]
then
((control--))
else
control=${c_end}
return 1
fi
;;
255)
return 1
control=${c_end}
;;
esac
fi
;;
4)
dialog_input_menu "[${control}] ${c_lbl[control]}" "${c_hlp[control]}" "${c_opt[control]}"
if [ ${codex} -eq 0 ]
then
response[control]="${value}"
((control++))
else
case ${codex} in
1)
if [ ${control} -gt 0 ]
then
((control--))
else
control=${c_end}
return 1
fi
;;
255)
return 1
control=${c_end}
;;
esac
fi
;;
esac
done
return 0
}

25
bin/msg/bootstrap.es Normal file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env bash
#bash script : bootstrap.es
#apps : Personal Developer Utilities
#description : Bootstrap Translate Messages (es)
#author : MRP/mrp - Mauro Rosero P.
#company email : mauro@rosero.one
#personal email : mauro.rosero@gmail.com
#date : 20240201
#version : 1.0.2
#notes :
#==============================================================================
#==============================================================================
bomsg_000="BOOTSTRAP"
pymsg_001="Instalando python3"
pymsg_002="Instalando dialog"
pymsg_003="Python3 instalado satisfactoriamente"
pymsg_004="Dialog instalado satisfactoriamente"
pdmsg_001="Instalando Podman..."
pdmsg_003="Podman fue instalado satisfactoriamente"
domsg_005="----> Docker previamente instalado, desinstale para poder instalar PODMAN o utilice DOCKER"

22
bin/msg/container.es Normal file
View file

@ -0,0 +1,22 @@
#!/usr/bin/env bash
#bash script : container.es
#apps : Podman/Docker Container Developer Utilities
#description : Container Translate Messages (es)
#author : MRP/mrp - Mauro Rosero P.
#company email : mauro@rosero.one
#personal email : mauro.rosero@gmail.com
#date : 20241130
#version : 1.0.2
#notes :
#==============================================================================
#==============================================================================
comsg_003_1="Uso:"
comsg_003_2="[--help] [--version]"
comsg_004="Descripción: Este script debe estar en la carpeta raíz de su proyecto."
comsg_005="Opciones:"
comsg_006=" --help Muestra este mensaje de ayuda."
comsg_007=" --version Muestra la versión del script."
comsg_101="BUILD CONTAINER"

63
bin/msg/head.es Normal file
View file

@ -0,0 +1,63 @@
#!/usr/bin/env bash
#bash script : head.es
#apps : MRosero Personal Developer Utilities
#description : Head Translate Messages (es)
#author : MRP/mrp - Mauro Rosero P.
#company email : mauro@rosero.one
#personal email : mauro.rosero@gmail.com
#date : 20240201
#version : 1.0.2
#notes :
#==============================================================================
#==============================================================================
head_000="AMBIENTE DE DESARROLLO"
head_002="(MRDEVS TOOLS)"
head_001="El comando 'dialog' no está instalado. Por favor, ejecute bin/bootstrap.sh."
head_installing="Instalando"
head_info="INFO"
head_warning="ADVERTENCIA"
head_error="ERROR"
head_unknow="UNKNOW"
head_version="Versión"
head_ubuntu="ubuntu"
head_confirm="(confirmar)"
head_os_error="Operación Cancelada. No se pudo determinar el sistema operativo."
head_op_error="Operación cancelada por el operador!"
head_pause="Presiona Enter para continuar..."
head_error_unknow="Operación Cancelada. Se produjo un error desconocido!"
head_fail="Fail"
head_exit="Finalizar"
head_create="Adicionar"
head_delete="Eliminar"
head_noproject="Esta carpeta no es un proyecto de desarrollo!"
head_noenv="Aún no se han configurado los parámetros del ambiente de desarrollo (.env)"
head_nobuild="No existe carpeta build para creación de contenedores"
head_nodockerfile="No existe el archivo de configuración Dockerfile"
head_nobuilded="No se pudo completar la construcción del contenedor"
head_builded="Construcción del contenedor completada!"
head_container="Generando contenedor"
label_email="Correo Electrónico:"
vldt_001="no puede estar en blanco..."
vldt_002="Contraseña incorrecta! Intente nuevamente."
vldt_010="Dirección de correo electrónico es inválida!"
vldt_011="Duración de clave gpg inválida!"
vldt_012="No es un nombre de dominio DNS válido!"
vldt_013="Valor debe ser alguno de estos:"
vldt_014="Valor no está dentro del rango válido:"
os_update="Actualizando sistema operativo "
os_nofound="Sistemas operativos soportados: Ubuntu, Debian, Arch Linux, Fedora, Redhat, AlmaLinux, Rocky, Oracle Linux, FreeBSD, MacOS"
pkg_install_begin="Instalando paquete(s):"
pkg_install_success="Instalación satisfactoria de paquete(s):"
git_initialized="Repositorio git inicializado!"
git_notinitialized="Repositorio git no fue inicializado!"
git_setbranch="Rama git ha sido creada"
git_gitignored="Archivo .gitignore generado a partir de plantilla"
git_add_files="Archivos base del proyecto agregados!"
git_first_commited="[INIT] Proyecto inicializado"
git_end_commited="Todos los cambios al repositorio nuevo han sido aplicados!"
git_new_project_pushed="Proyecto ha sido creado/actualizado en repositorio remoto"