Files
fdn2/scripts/generateDockerfile.sh
T
2022-08-29 23:20:16 +02:00

102 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
######
# Generates dockerfiles
# It expects docker to be logged in to ECR (see aws-login)
set -e
VERBOSE=0
DIR=`dirname $(realpath "${BASH_SOURCE[0]}")`
OLDDIR=`pwd`
cd "$DIR"
source "$DIR/../config"
source "$DIR/libs.sh"
usage() {
echo "Usage: $0 [-h] [-v] [-dub] [-i: input, default] -o: output " 1>&2;
echo "This script builds framework docker images, the following options are available:" 1>&2;
echo " -h: This message" 1>&2;
echo " Environment" 1>&2;
echo " -d: Debug" 1>&2;
echo " -u: Unit" 1>&2;
echo " -b: Base" 1>&2;
echo " -i: Config Input File" 1>&2;
echo " -o: Output file" 1>&2;
echo " -v: Verbose" 1>&2;
exit 1;
}
OUTFILE=""
CFGFILE="../config"
SELECTED_MODES=0
DEBUG_MODE=0
UNIT_MODE=0
BASE_MODE=0
while getopts "i:o:hvdub" o; do
case "${o}" in
d)
DEBUG_MODE=1
SELECTED_MODES+=1
;;
u)
UNIT_MODE=1
SELECTED_MODES+=1
;;
b)
BASE_MODE=1
SELECTED_MODES+=1
;;
i)
if [[ "$OPTARG" != "${OPTARG#/}" ]]; then
CFGFILE="${OPTARG}"
else
CFGFILE="${OLDDIR}/${OPTARG}"
fi
;;
o)
if [[ "$OPTARG" != "${OPTARG#/}" ]]; then
OUTFILE="${OPTARG}"
else
OUTFILE="${OLDDIR}/${OPTARG}"
fi
;;
v)
VERBOSE=1
;;
h)
usage
;;
*)
printerr "Unsupported option ${o}"
usage
;;
esac
done
if [[ $SELECTED_MODES -ne 1 ]]; then
printerr "Invalid mode"
usage
fi
if [[ $OUTFILE == "" ]]; then
printerr "Missing outfile"
usage
fi
STARTING_FILE="../cicd/dockerfiles/build.dockerfile"
if [[ $DEBUG_MODE -eq 1 ]]; then
STARTING_FILE="../cicd/dockerfiles/debug.dockerfile"
fi
if [[ $UNIT_MODE -eq 1 ]]; then
STARTING_FILE="../cicd/dockerfiles/test.dockerfile"
fi
msg "Using source file $STARTING_FILE"
buildTemplate -f "$CFGFILE" -t "$STARTING_FILE" -o "$OUTFILE"