Skip to content

Commit

Permalink
finalize v2 - add import env var
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrew Way committed Feb 24, 2023
1 parent 5446be9 commit b1cd8ff
Showing 1 changed file with 44 additions and 41 deletions.
85 changes: 44 additions & 41 deletions importVariables.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,54 +12,57 @@
# https://developer.hashicorp.com/terraform/language/values/variables#variable-definition-precedence
# lexical order, so last file wins!

KEYS=($(jq -rc 'keys | .[]' env0.auto.tfvars.json))
VALUES=($(jq -c '.[]' env0.auto.tfvars.json))
LENGTH=$(jq 'length' env0.auto.tfvars.json)
if [[ -e env0.auto.tfvars.json ]]; then

TFVAR_FILENAME=env1.auto.tfvars
if [[ -e $TFVAR_FILENAME ]]; then
rm $TFVAR_FILENAME
else
touch $TFVAR_FILENAME
fi
KEYS=($(jq -rc 'keys | .[]' env0.auto.tfvars.json))
VALUES=($(jq -c '.[]' env0.auto.tfvars.json))
LENGTH=$(jq 'length' env0.auto.tfvars.json)

# for each variable in env0.auto.tfvars.json
for ((i = 0; i < LENGTH; i++)); do
if [[ ${VALUES[i]} =~ ^(\"\$\{env0:) ]]; then
echo ${KEYS[i]}:${VALUES[i]}
# split the string across ':'
SPLIT_VALUES=($(echo ${VALUES[i]} | tr ":" "\n"))
SOURCE_ENV0_ENVIRONMENT_ID=${SPLIT_VALUES[1]}
len=$((${#SPLIT_VALUES[2]}-2))
SOURCE_OUTPUT_NAME=${SPLIT_VALUES[2]:0:$len}
echo "fetch value for ${KEYS[i]}:$SOURCE_OUTPUT_NAME from ${SOURCE_ENV0_ENVIRONMENT_ID}"
TFVAR_FILENAME=env1.auto.tfvars
if [[ -e $TFVAR_FILENAME ]]; then
rm $TFVAR_FILENAME
else
touch $TFVAR_FILENAME
fi

# fetch logs from environment
# TODO: Make it more efficient and not make a second call if the file already exists
curl -s --request GET \
--url https://api.env0.com/environments/$SOURCE_ENV0_ENVIRONMENT_ID \
--header 'accept: application/json' \
-u $ENV0_API_KEY:$ENV0_API_SECRET \
-o $SOURCE_ENV0_ENVIRONMENT_ID.json
# for each variable in env0.auto.tfvars.json
for ((i = 0; i < LENGTH; i++)); do
if [[ ${VALUES[i]} =~ ^(\"\$\{env0:) ]]; then
echo ${KEYS[i]}:${VALUES[i]}
# split the string across ':'
SPLIT_VALUES=($(echo ${VALUES[i]} | tr ":" "\n"))
SOURCE_ENV0_ENVIRONMENT_ID=${SPLIT_VALUES[1]}
len=$((${#SPLIT_VALUES[2]}-2))
SOURCE_OUTPUT_NAME=${SPLIT_VALUES[2]:0:$len}
echo "fetch value for ${KEYS[i]}:$SOURCE_OUTPUT_NAME from ${SOURCE_ENV0_ENVIRONMENT_ID}"

# fetch value from environment
SOURCE_OUTPUT_VALUE=$(jq ".latestDeploymentLog.output.$SOURCE_OUTPUT_NAME.value" $SOURCE_ENV0_ENVIRONMENT_ID.json)
#echo $SOURCE_OUTPUT_VALUE

# store value in .auto.tfvars
echo "${KEYS[i]}=$SOURCE_OUTPUT_VALUE" >> $TFVAR_FILENAME
fi
done
# fetch logs from environment
if [[ ! -e $SOURCE_ENV0_ENVIRONMENT_ID.json ]]; then
curl -s --request GET \
--url https://api.env0.com/environments/$SOURCE_ENV0_ENVIRONMENT_ID \
--header 'accept: application/json' \
-u $ENV0_API_KEY:$ENV0_API_SECRET \
-o $SOURCE_ENV0_ENVIRONMENT_ID.json
fi

# fetch value from environment
SOURCE_OUTPUT_VALUE=$(jq ".latestDeploymentLog.output.$SOURCE_OUTPUT_NAME.value" $SOURCE_ENV0_ENVIRONMENT_ID.json)
#echo $SOURCE_OUTPUT_VALUE

# store value in .auto.tfvars
echo "${KEYS[i]}=$SOURCE_OUTPUT_VALUE" >> $TFVAR_FILENAME
fi
done

# show updated values
cat $TFVAR_FILENAME
# show updated values
cat $TFVAR_FILENAME
fi

### Repeat process for Environment Variables
KEYS=($(jq -rc 'keys | .[]' env0.env-vars.json))
VALUES=($(jq -c '.[]' env0.env-vars.json))
LENGTH=$(jq 'length' env0.env-vars.json)

echo $LENGTH
# write to ENV0_ENV
# for each variable in env0.env-vars.json
for ((i = 0; i < LENGTH; i++)); do
Expand All @@ -74,17 +77,17 @@ for ((i = 0; i < LENGTH; i++)); do

# fetch logs from environment
if [[ ! -e $SOURCE_ENV0_ENVIRONMENT_ID.env.json ]]; then
curl --request GET \
curl -s --request GET \
--url "https://api.env0.com/configuration?organizationId=$ENV0_ORGANIZATION_ID&environmentId=$SOURCE_ENV0_ENVIRONMENT_ID" \
--header 'accept: application/json' \
-u $ENV0_API_KEY:$ENV0_API_SECRET \
-o $SOURCE_ENV0_ENVIRONMENT_ID.env.json
fi

# fetch value from environment
SOURCE_OUTPUT_VALUE=$(jq ".[] | select(.name==\"$SOURCE_OUTPUT_NAME\") | .value" $SOURCE_ENV0_ENVIRONMENT_ID.env.json)
SOURCE_OUTPUT_VALUE=$(jq -r ".[] | select(.name==\"$SOURCE_OUTPUT_NAME\") | .value" $SOURCE_ENV0_ENVIRONMENT_ID.env.json)
echo "${KEYS[i]}=$SOURCE_OUTPUT_VALUE"
# unset ${KEYS[i]}
echo "${KEYS[i]}=$SOURCE_OUTPUT_VALUE" >> $ENV0_ENV
fi
done

cat $ENV0_ENV

0 comments on commit b1cd8ff

Please sign in to comment.