X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/81b4fa7c80c2ad49755573fa4d5ca50213e3ce32..b2fdb3bf930fe5c733a580a813e095f5e600a2e2:/inst/util.sh?ds=sidebyside diff --git a/inst/util.sh b/inst/util.sh index 826ab9e..1cfb6c1 100755 --- a/inst/util.sh +++ b/inst/util.sh @@ -1,4 +1,9 @@ -#/bin/sh +#/bin/bash + +## Los scrips que incluyan deben definir BASE_DIR antes de incluirme! +#BASE_DIR="$PWD" + +LOCK_DIR="$BASE_DIR/lock" # Lee del teclado un valor # @@ -26,12 +31,25 @@ leer () { # $1 = Leyeda a mostrar de preguntar # $2 = string con las opciones validas # $3 = Variable donde guardar el valor ingresado +# $4 = Valor por defecto si se apreta ENTER # preguntar () { - PREGUNTA=$1 - OPCIONES=$2 - while [ true ] ; do + PREGUNTA="$1" + OPCIONES="$2" + DEFAULT="$4" + while true; do read -p "$PREGUNTA [$OPCIONES]: " RTA + + # Si me pasaron un default y la respuesta es vacía + if [ -n "$DEFAULT" -a -z "$RTA" ]; then + # devuelvo default + RTA="$DEFAULT" + return 0 + fi + + # Escapeo el caracter '-' por '\-' + RTA=$(echo $RTA | sed "s/\-/\\\-/") + IS_OK=`echo "$OPCIONES" | grep "$RTA"` if [ ! -z "$IS_OK" ] && [ ! -z "$RTA" ] ; then eval "$3=$RTA" @@ -51,45 +69,67 @@ validar_solo_numeros () { } # Crea un archivo de lock para un script +# Devuelve: 0 si ok, 1 si ya esta lockeado, 2 si no pudo crear lock. +# Uso: lock programa lock () { - if is_lock "$1" ; then - # Ya esta loqueado, no lo vuelvo a crear - echo "No" - return - fi - echo "lero lero" > "$INST_DIR/lock/$1.pid" + # si ya esta loqueado, no lo vuelvo a crear + is_lock "$1" && return 1 + # Si no puedo escribir en el dir de lock, da error + [ -w "$LOCK_DIR" ] || return 2 + echo $$ > "$LOCK_DIR/$1.pid" + return 0 } # Desbloquea el script +# Uso: unlock programa unlock () { - rm -rf "$INST_DIR/lock/$1.pid" + rm -rf "$LOCK_DIR/$1.pid" } # Consulta si un script esta lockeado +# Uso: is_lock programa is_lock () { - if [ -e "$INST_DIR/lock/$1.pid" ] ; then + if [ -e "$LOCK_DIR/$1.pid" ] ; then # Lock file encontrado! return 0 fi # No hay lock file! return 1 } - -#leer "Ingrese un directorio" "/tmp" ALGO -#echo "Ingresaste : $ALGO" +# Obtiene el pid de un programa lockeado +# Uso: lock_pid programa +lock_pid() +{ + is_lock "$1" && cat "$LOCK_DIR/$1.pid" +} + +# Verifica que un valor este entre otros 2 .... $1 pertecezca a [$2,$3] +# $1 Numero a validar +# $2 Cota inferior +# $3 Cota superior -# Test de preguntanto -#preguntar "Sos hombre (s/n)" "sn" OPT +validar_rango(){ + if [ "$1" -ge "$2" ] && [ "$1" -le "$3" ]; then + return 0 + else + return 1 + fi +} -#if [ "$OPT" == "s" ] ; then -# echo "Sos un mentiroso!!!" -#else -# echo "Jaja ... Trola!" -#fi +# Muestra mensaje y sale con código de error +# Uso: die mensaje [código de error = 1] +die() +{ + echo "$1" >&2 + exit ${2:-1} +} -# Test de preguntanto -#preguntar "Que preferis (drogas/cafe/vino/coca cola)" "drogas cafe vino \"coca cola\"" OPT +# Imprime mensaje por salida de error +# Uso: perr mensajes +perr() +{ + echo $@ >&2 +} -#echo "Vos decidis : $OPT"