diff --git a/bin/builder.sh b/bin/builder.sh new file mode 100755 index 0000000..84f3530 --- /dev/null +++ b/bin/builder.sh @@ -0,0 +1,150 @@ +#!/bin/bash +# +# builder.sh +# Modified: 2024/12/04 14:47:00 +# Derechos de Autor (C) [2024] [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 . + +PROGRAM_NAME="BUILDER CONTAINER (DEVSTOOLS)" +DEVSPATH=developers +DEVSTEAM=odoo +BIN_HOME=$HOME/$DEVSPATH/$DEVSTEAM +BIN_MESG=bin/msg +BIN_LIBS=bin/lib +VERSION="$(cat $BIN_HOME/config/project.version)" +DATENOW="$(date +"%Y-%m-%d %H:%M:%S")" + +# CHECK SHELL LANGUAGE +BIN_LANG=${LANG:0:2} + +# LOAD BASE BASH LIBRARY +source $BIN_HOME/$BIN_LIBS/base.lib +#baselib_test + +# LOAD CONSOLE BASH LIBRARY +source $BIN_HOME/$BIN_LIBS/console.lib +APPS_NAME="$(cat $BIN_HOME/$DEVS_NAME)" +#consolelib_test + +# LOAD ODOO BASH LIBRARY +source $BIN_HOME/$BIN_LIBS/odoo.lib +#odoolib_test + +# Load head messages +load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" + +# Load container messages +load_messages $BIN_HOME $BIN_MESG $BIN_LANG "container" + +# Load odoo messages +load_messages $BIN_HOME $BIN_MESG $BIN_LANG "odoo" + +# Function to display help message +function help() { + echo "$comsg_003_1 $0 $comsg_003_2" + echo "$comsg_004" + echo "$comsg_005" + echo "$comsg_006" + echo "$comsg_007" +} + +########### MAIN PROGRAM ########### + +# Display Headers +display_text_header $BIN_HOME "${head_000} ${comsg_101}" + +# Check for arguments option +help=false +version=false +while [[ $# -gt 0 ]]; do + case $1 in + --help) + help=true + shift + ;; + --version) + version=true + shift + ;; + esac +done + +# Check to show help +if $help; then + help + exit 0 +fi + +# Check to show command version +if $version; then + echo "$PROGRAM_NAME" + echo "$head_version $VERSION" + exit 0 +fi + +# Set project name +PROJECT_NAME="$(basename "$PWD")" + +# Check if project path is ok +DIR_NAME="$(dirname "$PWD")" +if [ "${DIR_NAME}" != "${BIN_HOME}" ] +then + echo "${head_error}: ${head_noproject}" + exit 2 +fi + +# Check if os is valid! +get_osname +if [ "${os_name}" == "${head_unknow}" ] +then + echo "${head_error}: ${head_os_error}" + exit 3 +fi + +# Check if .env file exists +if [ ! -f "$PWD/.env" ] +then + echo "${head_error}: ${head_noenv}" + exit 4 +fi + +# Check if build path exists +if [ ! -d "$PWD/$DOCKER_BUILD" ] +then + echo "${head_error}: ${head_nobuild}" + exit 5 +fi + +# Check if build path exists +if [ ! -f "$PWD/$DOCKER_BUILD/$DOCKER_FILE" ] +then + echo "${head_error}: ${head_nodockerfile}" + exit 6 +fi + +# Build odoo container +source "$PWD/.env" +CONTAINER="${DEVSTEAM}:${ODOO_CONTAINER}_${ODOO_VERSION}" +echo "$head_container ${CONTAINER}" +build_container "${CONTAINER}" "${DEVSTEAM}:${ODOO_VERSION}" +if [ $? -ne 0 ] +then + echo "${head_error}: ${head_nobuilded}" + exit 10 +fi + +echo "${head_info}: ${head_builded}" +exit 0 + diff --git a/bin/lib/base.lib b/bin/lib/base.lib index d0df90a..410f21e 100644 --- a/bin/lib/base.lib +++ b/bin/lib/base.lib @@ -18,6 +18,13 @@ # junto con este programa. Si no la recibió, consulte . 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 # Test library function baselib_test() { @@ -235,10 +242,53 @@ function get_osname() { } -function check_server() { +function docker_build() { - local SERVER=$1 + local CONTAINER=$1 + local BASE_IMAGE=$2 - ping -c 1 $SERVER > /dev/null 2>&1 && return 0 || return 1 + 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 } diff --git a/bin/lib/containers.lib b/bin/lib/containers.lib deleted file mode 100755 index c22b79e..0000000 --- a/bin/lib/containers.lib +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -#bootstrab.lib -# -# Derechos de Autor (C) [2024] [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 . - -# Función para iniciar una instancia de odoo en contenedor (podman o docker) -start_instance() { - local env_file=$1 - # Verificar si Docker está instalado - if command -v docker &> /dev/null; then - docker-compose --env-file ${env_file} up -d - return $? - fi - # Verificar si Podman está instalado - if command -v podman &> /dev/null; then - podman-compose --env-file ${env_file} up -d - return $? - fi - - echo "\n\nVisite http://localhost:101${odoo_port}" - # Ninguno de los dos está instalado - return 100 -} - -# Función para detener una instancia de odoo en contenedor (podman o docker) -stop_instance() { - local env_file=$1 - # Verificar si Docker está instalado - if command -v docker &> /dev/null; then - docker-compose --env-file ${env_file} down - return $? - fi - # Verificar si Podman está instalado - if command -v podman &> /dev/null; then - podman-compose --env-file ${env_file} down - return $? - fi - - # Ninguno de los dos está instalado - return 100 -} diff --git a/bin/lib/odoo.lib b/bin/lib/odoo.lib index c9a3e16..4c770b1 100644 --- a/bin/lib/odoo.lib +++ b/bin/lib/odoo.lib @@ -17,12 +17,6 @@ # Debería haber recibido una copia de la Licencia Pública Affero General # junto con este programa. Si no la recibió, consulte . -DOCKER_LOCAL=dockerfile.local -DOCKER_BASE=dockerfile.base -DOCKER_SAAS=dockerfile.saas -DOCKER_BUILD=build -DOCKER_FILE=Dockerfile - ODOO_APP=apps ODOO_DOC=docs ODOO_ETC=etc diff --git a/bin/msg/container.es b/bin/msg/container.es new file mode 100644 index 0000000..393abb6 --- /dev/null +++ b/bin/msg/container.es @@ -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" diff --git a/bin/msg/head.es b/bin/msg/head.es index 3090694..623c4e8 100644 --- a/bin/msg/head.es +++ b/bin/msg/head.es @@ -29,7 +29,14 @@ 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..." diff --git a/bin/project.sh b/bin/project.sh index 4115f9c..935f694 100755 --- a/bin/project.sh +++ b/bin/project.sh @@ -146,7 +146,7 @@ then if [ $? -eq 0 ]; then echo "[x] $result" echo "[x] $git_setbranch: ${ODOO_DEF_BRCH}${ODOO_VERS}" - cp -f $BIN_HOME/$ODOO_CFG/$ODOO_CFG_GITI $BIN_HOME/$PROJECT_NAME/ + cp -f $BIN_HOME/$ODOO_CFG/$ODOO_CFG_GITI $BIN_HOME/$PROJECT_NAME/$GIT_IGNORE echo "[x] $git_gitignored $ODOO_CFG_GITI" else echo echo "[-] $git_notinitialized" diff --git a/config/dockerfile.base b/config/dockerfile.base deleted file mode 100644 index d488808..0000000 --- a/config/dockerfile.base +++ /dev/null @@ -1,15 +0,0 @@ -ARG BASE_IMAGE -FROM $BASE_IMAGE -USER root - -RUN apt-get update && apt upgrade -y -RUN apt-get install gcc python3-dev libcups2-dev locales locales-all -y -RUN mkdir /backups 2>/dev/null -RUN mkdir /data 2>/dev/null - -VOLUME /backups -VOLUME /data - -RUN pip3 install python-crontab boto3 odoo-test-helper QifParser -RUN pip3 install html2text httpagentparser fuzzywuzzy[speedup] openpyxl xlrd>=1.0.0 -RUN pip3 install pyncclient pysftp diff --git a/config/dockerfile.local b/config/dockerfile.local index 0910ce5..4d6d51c 100644 --- a/config/dockerfile.local +++ b/config/dockerfile.local @@ -3,13 +3,11 @@ FROM $BASE_IMAGE USER root RUN apt-get update && apt upgrade -y -RUN apt-get install gcc python3-dev cups libcups2-dev locales locales-all -y +RUN apt-get install gcc python3-full python3-dev cups libcups2-dev locales locales-all -y RUN mkdir /backups 2>/dev/null RUN mkdir /data 2>/dev/null VOLUME /backups VOLUME /data -RUN pip3 install python-crontab boto3 pycups odoo-test-helper openai QifParser -RUN pip3 install html2text httpagentparser fuzzywuzzy[speedup] openpyxl xlrd>=1.0.0 -RUN pip3 install pyncclient nextcloud-api-wrapper dropbox pysftp +RUN pip3 install --break-system-packages python-crontab html2text dropbox pysftp pyncclient openpyxl xlrd>=1.0.0 nextcloud-api-wrapper diff --git a/config/dockerfile.saas b/config/dockerfile.saas deleted file mode 100644 index 751779d..0000000 --- a/config/dockerfile.saas +++ /dev/null @@ -1,15 +0,0 @@ -ARG BASE_IMAGE -FROM $BASE_IMAGE -USER root - -RUN apt-get update && apt upgrade -y -RUN apt-get install gcc python3-dev libcups2-dev locales locales-all -y -RUN mkdir /backups 2>/dev/null -RUN mkdir /data 2>/dev/null - -VOLUME /backups -VOLUME /data - -RUN pip3 install python-crontab boto3 odoo-test-helper openai QifParser -RUN pip3 install html2text httpagentparser fuzzywuzzy[speedup] openpyxl xlrd>=1.0.0 -RUN pip3 install pyncclient nextcloud-api-wrapper dropbox pysftp