feat: add bash shell utility functions
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.
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env bash
|
||||
# convert_text_case
|
||||
# -----------------
|
||||
# Convierte el contenido de texto de un archivo aplicando transformaciones:
|
||||
# upper (mayúsculas), lower (minúsculas), lf (normalizar saltos a LF),
|
||||
# crlf (normalizar saltos a CRLF).
|
||||
#
|
||||
# USO:
|
||||
# source convert_text_case.sh
|
||||
# convert_text_case mode file [output_file]
|
||||
#
|
||||
# ARGUMENTOS:
|
||||
# mode Transformación a aplicar: upper|lower|lf|crlf (requerido)
|
||||
# file Archivo de entrada (requerido)
|
||||
# output_file Archivo de salida (opcional; por defecto imprime a stdout)
|
||||
|
||||
convert_text_case() {
|
||||
local mode="${1:-}"
|
||||
local input_file="${2:-}"
|
||||
local output_file="${3:-}"
|
||||
|
||||
# Validar argumentos requeridos
|
||||
if [[ -z "$mode" ]]; then
|
||||
echo "convert_text_case: modo requerido (upper|lower|lf|crlf)" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ -z "$input_file" ]]; then
|
||||
echo "convert_text_case: archivo de entrada requerido" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "$input_file" ]]; then
|
||||
echo "convert_text_case: archivo no encontrado: ${input_file}" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Función auxiliar que aplica la conversión y escribe a stdout o archivo
|
||||
_apply_conversion() {
|
||||
local src="$1"
|
||||
local op="$2"
|
||||
case "$op" in
|
||||
upper)
|
||||
awk '{ print toupper($0) }' "$src"
|
||||
;;
|
||||
lower)
|
||||
awk '{ print tolower($0) }' "$src"
|
||||
;;
|
||||
lf)
|
||||
sed 's/\r$//' "$src"
|
||||
;;
|
||||
crlf)
|
||||
sed 's/\r$//' "$src" | sed 's/$/\r/'
|
||||
;;
|
||||
*)
|
||||
echo "convert_text_case: modo no soportado: ${op}. Usa: upper|lower|lf|crlf" >&2
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [[ -n "$output_file" ]]; then
|
||||
_apply_conversion "$input_file" "$mode" > "$output_file"
|
||||
echo "convert_text_case: ${input_file} → ${output_file} (modo: ${mode})"
|
||||
else
|
||||
_apply_conversion "$input_file" "$mode"
|
||||
fi
|
||||
}
|
||||
|
||||
# Ejecutar si se invoca directamente
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
convert_text_case "$@"
|
||||
fi
|
||||
Reference in New Issue
Block a user