#!/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: Image (webserver or worker)" 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 TYPE="webserver" while getopts "i:o:I:hvdub" o; do case "${o}" in I) TYPE="${OPTARG}" ;; 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/${TYPE}/build.dockerfile" if [[ $DEBUG_MODE -eq 1 ]]; then STARTING_FILE="../cicd/dockerfiles/${TYPE}/debug.dockerfile" fi if [[ $UNIT_MODE -eq 1 ]]; then STARTING_FILE="../cicd/dockerfiles/${TYPE}/test.dockerfile" fi msg "Using source file $STARTING_FILE" buildTemplate -f "$CFGFILE" -t "$STARTING_FILE" -o "$OUTFILE"