ESL-devenv/Template/function

189 lines
4.7 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
TestEnv() {
Check=$(which $1 2> /dev/null)
if [[ -z ${Check} ]]
then
echo "$1 not found ... "
exit 1
fi
}
Res() {
if [[ $1 -eq 0 ]]
then
echo "$(tput setaf 2)OK$(tput sgr0)"
else
echo "$(tput setaf 1)FAILED$(tput sgr0)"
fi
}
LinkESL() {
while [[ ! -d ${DirLink} ]]
do
read -p "Absolute path of ESL Programe or ESL Product : " DirLink
done
[[ -L $(dirname $0)/cible ]] && rm -f $(dirname $0)/cible &> /dev/null
echo -n "ESL symbolic link : "
ln -s ${DirLink} $(dirname $0)/cible &> /dev/null && echo OK || echo FAILED
}
help () {
echo "
$0 [image-gen/image-repo/link/repo/gen/run-repo/run-gen/import-image/save-image]
* $(tput setaf 3)image-gen $(tput sgr0): Generate docker image for esl compilator
* $(tput setaf 3)image-repo $(tput sgr0): Generate docker image for repository sync
* $(tput setaf 5)link $(tput sgr0): Create symbolic link to ESL Programe or Porduct
* $(tput setaf 4)repo $(tput sgr0): start docker compose and generate repositories
* $(tput setaf 4)gen $(tput sgr0): start docker compose and generarte esl
* $(tput setaf 2)run-gen $(tput sgr0): Connect and run bash on instance gen
* $(tput setaf 2)run-repo $(tput sgr0): Connect and run bash on instance repo
* $(tput setaf 6)import-image $(tput sgr0): Import last backuped docker image in ./images/
* $(tput setaf 6)save-image $(tput sgr0): backup docker image in ./images/
"
exit
}
DeleteFile() {
echo -n "Delete Dockerfile ... : "
[[ -f ${Wai}/Dockerfile ]] && rm Dockerfile || true
Res $?
}
DockerConnect() {
User=esl
[[ "$2" == "root" ]] && User='root'
Inst=$(docker ps|grep "esl-$1" | awk '{print $NF}')
[[ -L $(realpath $(dirname $0))/cible ]] && Cible="-v $(realpath $(dirname $0))/cible:/data/cible"
[[ -z "${Inst}" ]] && docker run -ti -v $(realpath $(dirname $0))/data:/data -v $(realpath $(dirname $0))/data/log:/log ${Cible} --hostname $1 -u ${User} esl\-${1}:2 bash || docker exec -ti -u $User ${Inst} bash
}
DockerPs() {
docker ps|grep $(dirname .)_esl\-$1 | awk '{print $NF}'
}
DockerStop() {
for DockerRun in $(docker ps|grep esl\- | awk '{print $NF}')
do
echo -n "Stop $DockerRun ... :"
docker stop $DockerRun &> /dev/null
Res $?
done
}
DeleteImg () {
DeleteFile
echo -n "Delte old images $1 ... : "
for var in $(docker image ls| grep "esl-$1" | awk '{print $3}'); do yes | docker image rm $var --force; done &> /dev/null
Res $?
}
DockerGen() {
DeleteImg $1
echo -n "generate Dockerfile $1 $Cible... : "
source define.conf
while read line
do
if [[ ! -z $(echo $line | grep '\$') ]]
then
eval echo ${line} | sed "s#\[#\[\'#g" | sed "s#\]#\'\]#g"
else
echo $line
fi
done < Template/Dockerfile.${1}.${Cible} > Dockerfile
Res $?
echo -n "Generate $1 Docker image ... : "
docker build --no-cache . -t esl-$1:${GenVers} 2>&1 | tee /tmp/BuildDocker-${1}.log &> /dev/null
Res $?
echo "
------ Log Compil -----------
/tmp/BuildDocker-${1}.log
-----------------------------
"
}
DockerComposeRun () {
echo "
------ Log Compil -----------
/tmp/GetRepo-${1}.log
-----------------------------
"
[[ -f ${Wai}/docker-compose.yml ]] && rm -f ${Wai}/docker-compose.yml
[[ "$2" == "Print" ]] && Print="-d" || Print=""
cp ${Wai}/Template/docker-compose.yml.$1 ${Wai}/docker-compose.yml
echo "Log is : log/${1} - use tail -f ./log/$1"
[[ -L $(realpath $(dirname $0))/cible ]] && Cible="-v $(realpath $(dirname $0))/cible:/data/cible"
docker run -ti -v $(realpath $(dirname $0))/data:/data -v $(realpath $(dirname $0))/data/log:/tmp/log ${Cible} -u esl --hostname $1 esl\-${1}:2 /usr/local/bin/${1}.sh
#yes | docker-compose up ${Print} --remove-orphans 1>&1 | tee /tmp/RunDocker-${1}.log &> /dev/null
##yes | docker-compose up ${Print} --remove-orphans
Res $?
echo "
--------- Log Esl -----------
/tmp/RunDocker-${1}.log
-----------------------------
"
}
DockerSave () {
for Image in $(docker image ls | grep -E "^esl-repo|^esl-gen" | awk '{print $1":"$2}')
do
EslImage=$(echo $Image | cut -d":" -f1)
EslImageVersion=$(echo $Image | cut -d":" -f2)
echo -ne "Save $Image : "
docker save $Image | gzip > $(dirname $0)/images/${EslImageVersion}-$(date +%Y%m%d)_$(echo $Image | sed 's/:/-/g').gz
[[ "$?" -eq 0 ]] && echo OK || echo FAILED
done
}
DockerImport () {
if [[ $(ls -1 images | grep "esl-"| wc -l) -eq 0 ]]
then
echo "Nothing todo ..."
else
for Type in repo gen
do
GetImage=$(ls -1 images | grep $Type |sort -r -n -t"-" -k1,2 | head -n1)
echo -ne "Import $GetImage : "
zcat images/$GetImage | docker load &> /dev/null
[[ "$?" -eq 0 ]] && echo OK || echo FAILED
done
fi
}
#GenAll () {
# DockerGen gen
# DockerGen repo
#}