summaryrefslogtreecommitdiff
path: root/shell-scripts/terragrunt
blob: 10d2160ced5b8c31bd403c81cbba7202fce8199f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!@bash@/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)
        ;;
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[@]} | filter-ansi | grep --line-buffered -E '(^ .*[#~+-] .*|^[[:punct:]]|^Plan.*|^\S.*)'"
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 $TERRAGRUNT_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 $TERRAGRUNT_EXTRA_MOUNTS -v ${REPO}:${REPO} -w ${WORKDIR} $TERRAGRUNT_CONTAINER terragrunt ${TERRAGRUNT_ARGS[@]} | filter-ansi
fi