8f45b40528
12 funciones Bash del dominio shell: utilidades de scripting (bash_log, bash_colors, bash_check_deps, bash_confirm, bash_handle_error, bash_safe_run), manipulacion de texto (convert_text_case), estructura de proyectos (create_project_structure), y operaciones git (git_clean_branches, git_log_visual, git_push_all_remotes, git_repo_status). Cada una con su .sh y .md de frontmatter.
45 lines
1.0 KiB
Bash
45 lines
1.0 KiB
Bash
# bash_safe_run
|
|
# -------------
|
|
# Ejecutar comandos con manejo de errores y trap.
|
|
# Incluye safe_run, setup_error_trap y error_trap_handler.
|
|
#
|
|
# USO (sourced):
|
|
# source bash_safe_run.sh
|
|
# setup_error_trap
|
|
# safe_run "go build ./..." "BUILD_FAILED" "La compilacion fallo"
|
|
|
|
SCRIPT_DIR_BASH_SAFE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR_BASH_SAFE/bash_log.sh"
|
|
bash_log_init
|
|
|
|
safe_run() {
|
|
local cmd="$1"
|
|
local error_code="${2:-COMMAND_FAILED}"
|
|
local error_desc="${3:-El comando fallo: $cmd}"
|
|
|
|
debug "Ejecutando: $cmd"
|
|
|
|
if ! eval "$cmd"; then
|
|
error "$error_desc ($error_code)"
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
setup_error_trap() {
|
|
trap 'error_trap_handler $? $LINENO' ERR
|
|
}
|
|
|
|
error_trap_handler() {
|
|
local exit_code=$1
|
|
local line_number=$2
|
|
|
|
if [ "$exit_code" -ne 0 ]; then
|
|
echo ""
|
|
error "El script fallo en la linea $line_number con codigo de salida $exit_code"
|
|
echo -e "${GRAY}Consulta el log: ${ERROR_LOG_FILE:-/tmp/script-errors.log}${NC}"
|
|
echo ""
|
|
fi
|
|
}
|