You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
7.0 KiB
169 lines
7.0 KiB
##---------------------------------------------------------------------------- |
|
## 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
|
|
|