1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #! /bin/bash
- findup ()
- {
- DIR='..'
- DIRTEST=$( cd $DIR ; pwd )
- while [[ "$DIRTEST" != "/" ]]; do
- DIR="$DIR/.."
- DIRTEST=$( cd $DIR ; pwd )
- if [[ -d "$DIR/$1" ]]; then
- echo "$DIR/$1"
- return 0
- fi
- done
- # Failed to find
- return 1
- }
- if [ ! -f terragrunt.hcl ]; then
- echo "ERROR: No terragrunt.hcl in this directory. Aborting."
- exit 1
- fi
- GITSOURCE=$( cat terragrunt.hcl | egrep -v '^ *#' | egrep 'source *= *"git@' )
- if [ "$GITSOURCE" == "" ]; then
- echo "ERROR: No source from Git detected. Aborting."
- exit 2
- fi
- # Strip off source = and quotes
- GITSOURCE=$( echo "$GITSOURCE" | sed -E 's/.*"([^"]+)".*/\1/' )
- # Strip off any ?ref= if it's there
- GITSOURCE=$( echo "$GITSOURCE" | sed -E 's/\?.*$//' )
- # Thanks to terragrunt needing that magic // construct
- GITSOURCE_REPO=$( echo "$GITSOURCE" | sed -E 's#//.*$##' )
- GITSOURCE_PATHINREPO=$( echo "$GITSOURCE" | sed -E "s#.*//##" )
- BARE_REPONAME=$( basename "$GITSOURCE_REPO" .git )
- LOCALPATH=$( findup "$BARE_REPONAME" )
- if [[ "$LOCALPATH" == "" ]]; then
- echo "ERROR: No $BARE_REPONAME in any parent directory"
- exit 1
- fi
- NEWPATH="$LOCALPATH//$GITSOURCE_PATHINREPO"
- echo Substituting \'$GITSOURCE\' with \'$NEWPATH\'
- # Provider lockfiles are a pain
- #if [ ! -f .terraform.lock.hcl ]; then
- # echo "No providers lock (.terraform.lock.hcl) found in this directory. Creating..."
- # terragrunt providers lock -platform=darwin_amd64 -platform=linux_amd64 -platform=windows_amd64 -platform=linux_arm64 --terragrunt-source $NEWPATH
- # RC=$?
- # if [[ $RC != 0 ]]; then
- # read -p "ERROR: Failed to generate providers file. Apply anyway? [yN] " -n 1 -r
- # echo ""
- # if [[ ! $REPLY =~ ^[Yy]$ ]]
- # then
- # echo Exiting...
- # exit 4
- # fi
- # fi
- #fi
- # Test locally
- # the double // is intentional! Terragrunt uses this to determine the root of the modules repository.
- terragrunt $* --terragrunt-source $NEWPATH
|