170 lines
7.0 KiB
Plaintext
Executable File
170 lines
7.0 KiB
Plaintext
Executable File
##----------------------------------------------------------------------------
|
|
## Script : affiche_ligne.lib
|
|
## Module Puppet : gnc-script_core_dtsi
|
|
## Auteur : Emmanuel Confrere
|
|
## Date : 13-04-2017
|
|
## Version : 1.1.0
|
|
## Objet : Permet d'afficher sur la sortie standard un texte sous forme de tableau
|
|
##
|
|
## Fonction : fct_affiche_ligne
|
|
##
|
|
## Detail : Definition de l'entete du tableau :
|
|
## fct_affiche_ligne entete "{Titre}" "{Colonne_1},{Taille_1}" "{Colonne_2},{Taille_2}" "{Colonne_3},{Taille_3}" "{Colonne_4},{Taille_4}" ...
|
|
## fct_affiche_ligne entete "{Titre}" "Groupe1({Colonne_1},{Taille_1}:{Colonne_2},{Taille_2})" "{Colonne_3},{Taille_3}" "Groupe2({Colonne_4},{Taille_4}:...)" ...
|
|
##
|
|
## Affichage des lignes du tableau :
|
|
## fct_affiche_ligne "${Variable_1}" "${Variable_2}" "${Variable_3}" "${Variable_4}" ...
|
|
##
|
|
## Affichage du pied
|
|
## fct_affiche_ligne pied
|
|
##
|
|
## Affichage d une ligne de separation
|
|
## fct_affiche_ligne sep
|
|
##
|
|
## Les trois forme de declaration doivent apparaitre dans l ordre :
|
|
## fct_affiche_ligne entete -> Initialise le tableau
|
|
## fct_affiche_ligne -> Affiche une ligne
|
|
## fct_affiche_ligne pied -> Libere la configuration du tableau
|
|
##
|
|
# ----------------------------------------------------------------------------
|
|
# Mise a jour :
|
|
# 1.0.0 10-02-2016 - Emmanuel Confrere - Cre : Reprise du script du socle Oracle
|
|
# 1.1.0 13-04-2017 - Emmanuel Confrere - Evo : Ajout de l option "sep"
|
|
##----------------------------------------------------------------------------
|
|
|
|
function fct_affiche_ligne
|
|
{
|
|
local L_NB_PARAM=$#
|
|
local L_PARAM=""
|
|
local L_IDX_PARAM=1
|
|
local L_IDX_COL=1
|
|
local L_MESSAGE=""
|
|
local L_ENTETE="non"
|
|
local L_PIED="non"
|
|
local L_SEP="non"
|
|
local L_GROUPE="non"
|
|
local L_GRP_NOM=""
|
|
local L_TAILLE_GRP=0
|
|
local L_COL_LISTE=""
|
|
local L_COL=""
|
|
local L_GRP_MESS_L1=""
|
|
local L_GRP_MESS_L2=""
|
|
local L_GRP_MESS_L3=""
|
|
local L_OLD_IFS=""
|
|
|
|
# - recuperation des parametres en entree
|
|
[ -n "${IFS}" ] && L_OLD_IFS=${IFS}
|
|
IFS="@"
|
|
while [ ${L_IDX_PARAM} -le ${L_NB_PARAM} ]
|
|
do
|
|
L_PARAM[${L_IDX_PARAM}]=`echo $1|cut -d, -f1`
|
|
[ "${L_PARAM[1]}" = "entete" ] && L_ENTETE="oui"
|
|
[ "${L_PARAM[1]}" = "pied" ] && L_PIED="oui"
|
|
[ "${L_PARAM[1]}" = "sep" ] && L_SEP="oui"
|
|
if [ "${L_ENTETE}" = "oui" -a ${L_IDX_PARAM} -gt 2 ]
|
|
then
|
|
if [ `echo $1|grep -c "("` -eq 1 ]
|
|
then
|
|
L_GROUPE="oui"
|
|
L_TAILLE_GRP=0
|
|
L_GRP_NOM=`echo $1|cut -d "(" -f1`
|
|
L_COL_LISTE=`echo $1|sed 's/:/@/g;s/^.*(//;s/)//'`
|
|
for L_COL in ${L_COL_LISTE}
|
|
do
|
|
L_PARAM[${L_IDX_PARAM}]=`echo ${L_COL}|cut -d, -f1`
|
|
SH_TAILLE_COL[${L_IDX_COL}]=`echo ${L_COL}|cut -d, -f2`
|
|
[ -z "${SH_TAILLE_COL[${L_IDX_COL}]}" ] && SH_TAILLE_COL[${L_IDX_COL}]=${#L_PARAM[${L_IDX_PARAM}]}
|
|
[ ${SH_TAILLE_COL[${L_IDX_COL}]} -eq 0 ] && SH_TAILLE_COL[${L_IDX_COL}]=${#L_PARAM[${L_IDX_PARAM}]}
|
|
SH_TAILLE_COL[${L_IDX_COL}]=$(( ${SH_TAILLE_COL[${L_IDX_COL}]} + 2 ))
|
|
SH_TAILLE_TABLEAU=$(( ${SH_TAILLE_TABLEAU} + ${SH_TAILLE_COL[${L_IDX_COL}]} ))
|
|
L_TAILLE_GRP=$(( ${L_TAILLE_GRP} + ${SH_TAILLE_COL[${L_IDX_COL}]} + 1 ))
|
|
[ ${L_IDX_PARAM} -eq ${L_NB_PARAM} ] && L_GRP_MESS_L3="${L_GRP_MESS_L3}`fct_format "${L_PARAM[${L_IDX_PARAM}]}" ${SH_TAILLE_COL[${L_IDX_COL}]} c`"
|
|
[ ${L_IDX_PARAM} -ne ${L_NB_PARAM} ] && L_GRP_MESS_L3="${L_GRP_MESS_L3}`fct_format "${L_PARAM[${L_IDX_PARAM}]}" ${SH_TAILLE_COL[${L_IDX_COL}]} c`|"
|
|
((L_IDX_COL++))
|
|
((L_IDX_PARAM++))
|
|
((L_NB_PARAM++))
|
|
done
|
|
((L_TAILLE_GRP--))
|
|
((L_IDX_PARAM--))
|
|
((L_NB_PARAM--))
|
|
L_GRP_MESS_L1="${L_GRP_MESS_L1}`fct_format "${L_GRP_NOM}" ${L_TAILLE_GRP} c`|"
|
|
L_GRP_MESS_L2="${L_GRP_MESS_L2}`fct_format "-" ${L_TAILLE_GRP} r`|"
|
|
else
|
|
SH_TAILLE_COL[${L_IDX_COL}]=`echo $1|cut -d, -f2`
|
|
[ -z "${SH_TAILLE_COL[${L_IDX_COL}]}" ] && SH_TAILLE_COL[${L_IDX_COL}]=${#L_PARAM[${L_IDX_PARAM}]}
|
|
[ ${SH_TAILLE_COL[${L_IDX_COL}]} -eq 0 ] && SH_TAILLE_COL[${L_IDX_COL}]=${#L_PARAM[${L_IDX_PARAM}]}
|
|
SH_TAILLE_COL[${L_IDX_COL}]=$(( ${SH_TAILLE_COL[${L_IDX_COL}]} + 2 ))
|
|
SH_TAILLE_TABLEAU=$(( ${SH_TAILLE_TABLEAU} + ${SH_TAILLE_COL[${L_IDX_COL}]} ))
|
|
if [ ${L_IDX_PARAM} -eq ${L_NB_PARAM} ]
|
|
then
|
|
L_GRP_MESS_L1="${L_GRP_MESS_L1}`fct_format " " ${SH_TAILLE_COL[${L_IDX_COL}]} c`"
|
|
L_GRP_MESS_L2="${L_GRP_MESS_L2}`fct_format "${L_PARAM[${L_IDX_PARAM}]}" ${SH_TAILLE_COL[${L_IDX_COL}]} c`"
|
|
L_GRP_MESS_L3="${L_GRP_MESS_L3}`fct_format " " ${SH_TAILLE_COL[${L_IDX_COL}]} c`"
|
|
else
|
|
L_GRP_MESS_L1="${L_GRP_MESS_L1}`fct_format " " ${SH_TAILLE_COL[${L_IDX_COL}]} c`|"
|
|
L_GRP_MESS_L2="${L_GRP_MESS_L2}`fct_format "${L_PARAM[${L_IDX_PARAM}]}" ${SH_TAILLE_COL[${L_IDX_COL}]} c`|"
|
|
L_GRP_MESS_L3="${L_GRP_MESS_L3}`fct_format " " ${SH_TAILLE_COL[${L_IDX_COL}]} c`|"
|
|
fi
|
|
((L_IDX_COL++))
|
|
fi
|
|
fi
|
|
shift
|
|
((L_IDX_PARAM++))
|
|
done
|
|
[ "${L_ENTETE}" = "oui" ] && SH_TAILLE_TABLEAU=$(( ${SH_TAILLE_TABLEAU} + ${L_NB_PARAM} - 3 ))
|
|
|
|
# -- Affichage de la ligne
|
|
# -- ---------------------
|
|
L_IDX_PARAM=1
|
|
L_IDX_COL=1
|
|
L_MESSAGE=""
|
|
|
|
# -- Affichage de l entete du tableau
|
|
if [ "${L_ENTETE}" = "oui" ]
|
|
then
|
|
fct_message -cpt "`fct_format "-" ${SH_TAILLE_TABLEAU} r`"
|
|
fct_message -cpt -color jaune "`fct_format "${L_PARAM[2]}" ${SH_TAILLE_TABLEAU} c`"
|
|
fct_message -cpt "`fct_format "-" ${SH_TAILLE_TABLEAU} r`"
|
|
if [ "${L_GROUPE}" = "oui" ]
|
|
then
|
|
fct_message -cpt "${L_GRP_MESS_L1}"
|
|
fct_message -cpt "${L_GRP_MESS_L2}"
|
|
fct_message -cpt "${L_GRP_MESS_L3}"
|
|
else
|
|
fct_message -cpt "${L_GRP_MESS_L2}"
|
|
fi
|
|
fct_message -cpt "`fct_format "-" ${SH_TAILLE_TABLEAU} r`"
|
|
export SH_TAILLE_TABLEAU SH_TAILLE_COL
|
|
L_IDX_PARAM=3
|
|
fi
|
|
|
|
# -- Affichage du corp du tableau
|
|
while [ ${L_IDX_PARAM} -le ${L_NB_PARAM} -a "${L_PIED}" = "non" -a "${L_ENTETE}" = "non" ]
|
|
do
|
|
if [ ${L_IDX_PARAM} -eq ${L_NB_PARAM} ]
|
|
then
|
|
L_MESSAGE="${L_MESSAGE}`fct_format "${L_PARAM[${L_IDX_PARAM}]}" ${SH_TAILLE_COL[${L_IDX_COL}]} d`"
|
|
else
|
|
L_MESSAGE="${L_MESSAGE}`fct_format "${L_PARAM[${L_IDX_PARAM}]}" ${SH_TAILLE_COL[${L_IDX_COL}]} d`|"
|
|
fi
|
|
((L_IDX_PARAM++))
|
|
((L_IDX_COL++))
|
|
done
|
|
[ "${L_PIED}" = "non" -a "${L_ENTETE}" = "non" ] && fct_message -cpt "${L_MESSAGE}"
|
|
|
|
# -- Affichage du pied et liberation des variables de gestion
|
|
if [ "${L_PIED}" = "oui" ]
|
|
then
|
|
fct_message -cpt "`fct_format "-" ${SH_TAILLE_TABLEAU} r`"
|
|
unset SH_TAILLE_TABLEAU SH_TAILLE_COL
|
|
fi
|
|
|
|
# -- Affichage d une ligne de separation
|
|
[ "${L_SEP}" = "oui" ] && fct_message -cpt "`fct_format "-" ${SH_TAILLE_TABLEAU} r`"
|
|
|
|
[ -n "${L_OLD_IFS}" ] && IFS=${L_OLD_IFS} || unset IFS
|
|
|
|
return 0
|
|
}
|
|
typeset -Ffx fct_affiche_ligne
|