| #!/bin/bash |
| # |
| # Copyright 2022 Google LLC |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| set -eo pipefail |
| |
| # Ensure current directory is same as script. |
| helperDir="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)" |
| pushd "$helperDir/.." >/dev/null |
| |
| # If Terraform was previously configured to work with a different project, |
| # then remove the previous Terraform state. |
| prev_project_id=$(terraform output -raw project_id &>/dev/null) |
| if [[ $? -eq 0 ]]; then |
| if [[ "$prev_project_id" != "$GOOGLE_CLOUD_PROJECT" ]]; then |
| if [[ -f terraform.tfstate ]]; then |
| rm terraform.tfstate |
| fi |
| fi |
| fi |
| |
| # Create generated.auto.tfvars which will be used as input values to generated-variables.tf |
| touch generated.auto.tfvars |
| echo "# Auto-generated by ./.cloud/plan.sh |
| project_id = \"$GOOGLE_CLOUD_PROJECT\" |
| " >generated.auto.tfvars |
| |
| # Either use given module list, or get a list of all modules in the parent directory. |
| if [ -n "$1" ]; then |
| modules=$1 |
| else |
| modules=$(listAllModules) |
| fi |
| echo "Planning around modules $modules" |
| IFS=',' |
| for module in $modules; do |
| # Only include modules with a .cloud subdirectory in the generated config. |
| if [ -f "../$module/.cloud/preplan.sh" ]; then |
| # shellcheck disable=SC1090 |
| source "../$module/.cloud/preplan.sh" generated.auto.tfvars |
| fi |
| done |
| |
| terraform fmt -list=false generated.auto.tfvars |
| terraform plan -out generated.tfplan |
| terraform show -json generated.tfplan >generated.tfplan.json |
| |
| popd >/dev/null |