77 lines
2.5 KiB
Bash
77 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
|
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
|
|
PRG=$(basename $0)
|
|
QUIET=1
|
|
|
|
usage() {
|
|
echo "${PRG} [OPTIONS] [envname ...]
|
|
Récupère les variables d'environnement présentes dans /kaz/secret/env-envname et crée des variables à partir de ces noms là.
|
|
Les variables sont du type envname_NOMVARIABLE=valeur
|
|
On peut passer plusieurs fichiers env, à partir du moment ou ils sont tous dans le même répertoire !
|
|
OPTIONS
|
|
-h|--help Cette aide :-)
|
|
-n|--simu SIMULATION
|
|
-d foldername prend les envfiles dans un sous dossier /kaz/secret/foldername/ (pour les orgas !)
|
|
Les variables seront du type foldername-envname_NOMVARIABLE=valeur
|
|
-e varname Affiche le contenu d'une variable en particulier
|
|
"
|
|
}
|
|
|
|
for ARG in "$@"; do
|
|
if [ -n "${DIRECTORYARG}" ]; then # après un -d
|
|
SUBDIRECTORY="${ARG}"
|
|
DIRECTORYARG=
|
|
elif [ -n "${ECHOVARARG}" ]; then # après un -e
|
|
VARTOECHO="${ARG}"
|
|
ECHOVARARG=
|
|
QUIET="/dev/null" # pour ne pas avoir d'autres bruits ...
|
|
else
|
|
|
|
case "${ARG}" in
|
|
'-d' | '--directory' | '-f' | '--folder' | '--foldername')
|
|
DIRECTORYARG="ON ATTEND UN REPERTOIRE APRES CA" ;;
|
|
'-h' | '--help' )
|
|
usage && exit ;;
|
|
'-n' | '--simu')
|
|
SIMU="echo" ;;
|
|
'-e' | '--echo')
|
|
ECHOVARARG="ON ATTEND UNE UN NOM DE VARIABLE APRES CA" ;;
|
|
'-q' )
|
|
QUIET="/dev/null" ;;
|
|
*)
|
|
ENVFILES="${ENVFILES} ${ARG%}";;
|
|
esac
|
|
fi
|
|
done
|
|
|
|
NB_FILES=$(echo "${ENVFILES}" | wc -w )
|
|
|
|
if [[ $NB_FILES = 0 ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
for ENVFILE in $ENVFILES; do
|
|
FILENAME="$KAZ_KEY_DIR/env-$ENVFILE"
|
|
VARNAME="$ENVFILE"_
|
|
if [ -n "${SUBDIRECTORY}" ]; then
|
|
FILENAME="$KAZ_KEY_DIR/orgas/$SUBDIRECTORY/env-$ENVFILE"
|
|
VARNAME="${SUBDIRECTORY}-${ENVFILE}_"
|
|
fi
|
|
|
|
if ! [ -f "$FILENAME" ]; then
|
|
echo "$FILENAME does not exist." >& $QUIET
|
|
continue
|
|
fi
|
|
|
|
# formule magique qui crée des variables envname_NOMVARIABLE=la valeur trouvé (le sed vire les commentaires et les lignes vides)
|
|
# on pourrait se contenter d'un "source env-file", mais avec un prefix dans les variables pour savoir ce qu'on manipule c'est bien aussi ...
|
|
$SIMU export $(sed -e 's/#.*//' -e '/^\s*$/d' "$FILENAME" | awk -F= -v ENV="$VARNAME" '{output=output" "ENV$1"="$2} END {print output}')
|
|
done
|
|
|
|
if [ -n "$VARTOECHO" ]; then
|
|
echo ${!VARTOECHO}
|
|
fi
|