#!/bin/bash TERRAGRUNT_ARGS=() CONTEXT="" ENV="" MODULE="" FULL=0 while [[ $# -gt 0 ]]; do case $1 in -full) FULL=1 shift ;; -m|--module-path) MODULE="$2" shift shift ;; -m=*|--module-path=*) MODULE="${1#*=}" shift ;; -e|--env) ABS_ENV="$2" CONTEXT=${ABS_ENV%/*} ENV=${ABS_ENV#*/} shift shift ;; -e=*|--env=*) ABS_ENV="${1#*=}" CONTEXT=${ABS_ENV%/*} ENV=${ABS_ENV#*/} shift ;; *|-*) TERRAGRUNT_ARGS+=("$1") shift esac done TTY="" case ${TERRAGRUNT_ARGS[0]} in plan) TERRAGRUNT_ARGS+=(-no-color -compact-warnings) ;; apply|destroy) TTY="-t" for arg in $TERRAGRUNT_ARGS; do if [[ $arg -eq "gruntplan" ]]; then TTY="" fi done TERRAGRUNT_ARGS+=(-no-color -compact-warnings) ;; init) TERRAGRUNT_ARGS+=(-no-color -compact-warnings) ;; *) exit 1 ;; esac VARIABLES="" REPO="${PWD}" TERRAGRUNT_EXTRA_MOUNTS="" for var in $(pass show work/env) do case $var in TERRAGRUNT_EXTRA_MOUNTS) TERRAGRUNT_EXTRA_MOUNTS="$var" ;; *) VARIABLES="$VARIABLES$(printf ' -e %s' "$var")" ;; esac done for var in $(printenv) do case $var in TF_*) VARIABLES="$VARIABLES$(printf ' -e %s' $var)" ;; esac done ENVIRONMENTS="$REPO/environments" WORKDIR="$ENVIRONMENTS/$ENV/$MODULE" # TODO(mike): how to do concise mode | grep -E '(^.*[#~+-] .*|^[[:punct:]]|Plan)' # TODO(mike): check expiry of azure directory # echo "docker run --rm -i $TTY $VARIABLES -v $HOME/.terragrunt-cache:/tmp -v $HOME/.azure:/root/.azure -v $HOME/.netrc:/root/.netrc $TERRAGRUNT_EXTRA_MOUNTS -v ${REPO}:${REPO} -w ${WORKDIR} $TERRAGRUNT_CONTAINER terragrunt ${TERRAGRUNT_ARGS[@]} | grep -E '(^.*[#~+-] .*|^[[:punct:]]|Plan|Enter)'" echo $VARIABLES if [[ $FULL -eq 0 ]]; then docker run --rm -i $TTY $VARIABLES -v $HOME/.terragrunt-cache:/tmp -v $HOME/.azure:/root/.azure -v $HOME/.netrc:/root/.netrc $EXTRA_MOUNTS -v ${REPO}:${REPO} -w ${WORKDIR} $TERRAGRUNT_CONTAINER terragrunt ${TERRAGRUNT_ARGS[@]} | filter-ansi | grep --line-buffered -E '(^ .*[#~+-] .*|^[[:punct:]]|^Plan.*|^\S.*)' else docker run --rm -i $TTY $VARIABLES -v $HOME/.terragrunt-cache:/tmp -v $HOME/.azure:/root/.azure -v $HOME/.netrc:/root/.netrc $EXTRA_MOUNTS -v ${REPO}:${REPO} -w ${WORKDIR} $TERRAGRUNT_CONTAINER terragrunt ${TERRAGRUNT_ARGS[@]} | filter-ansi fi