xref: /aosp_15_r20/external/google-cloud-java/.cloud/helpers/generate-config.sh (revision 55e87721aa1bc457b326496a7ca40f3ea1a63287)
1*55e87721SMatt Gilbride#
2*55e87721SMatt Gilbride# Copyright 2022 Google LLC
3*55e87721SMatt Gilbride#
4*55e87721SMatt Gilbride# Licensed under the Apache License, Version 2.0 (the "License");
5*55e87721SMatt Gilbride# you may not use this file except in compliance with the License.
6*55e87721SMatt Gilbride# You may obtain a copy of the License at
7*55e87721SMatt Gilbride#
8*55e87721SMatt Gilbride#      https://www.apache.org/licenses/LICENSE-2.0
9*55e87721SMatt Gilbride#
10*55e87721SMatt Gilbride# Unless required by applicable law or agreed to in writing, software
11*55e87721SMatt Gilbride# distributed under the License is distributed on an "AS IS" BASIS,
12*55e87721SMatt Gilbride# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*55e87721SMatt Gilbride# See the License for the specific language governing permissions and
14*55e87721SMatt Gilbride# limitations under the License.
15*55e87721SMatt Gilbride#
16*55e87721SMatt Gilbrideset -eo pipefail
17*55e87721SMatt Gilbride
18*55e87721SMatt Gilbridefunction initializeGeneratedFiles() {
19*55e87721SMatt Gilbride  cp ./helpers/generated-main.template.tf generated-main.tf
20*55e87721SMatt Gilbride  cp ./helpers/generated-outputs.template.tf generated-outputs.tf
21*55e87721SMatt Gilbride  cp ./helpers/generated-variables.template.tf generated-variables.tf
22*55e87721SMatt Gilbride}
23*55e87721SMatt Gilbride
24*55e87721SMatt Gilbridefunction appendModule() {
25*55e87721SMatt Gilbride  friendlyName=$(getFriendlyOutputName "$1")
26*55e87721SMatt Gilbride
27*55e87721SMatt Gilbride  # Append the given module to the generated-main.tf configuration to be
28*55e87721SMatt Gilbride  # included in the project's resources during 'terraform apply'.
29*55e87721SMatt Gilbride  echo "module \"$friendlyName\" {
30*55e87721SMatt Gilbride    source = \"./../$1/.cloud\"
31*55e87721SMatt Gilbride    inputs = local.data
32*55e87721SMatt Gilbride    depends_on = [time_sleep.for_1m_allowBaseCloudApisToFullyEnable]
33*55e87721SMatt Gilbride  }" >>generated-main.tf
34*55e87721SMatt Gilbride
35*55e87721SMatt Gilbride  # Append the given module to the generated-output.tf file to provide
36*55e87721SMatt Gilbride  # all of this module's outputs as an object.
37*55e87721SMatt Gilbride  # See https://www.terraform.io/cli/commands/output
38*55e87721SMatt Gilbride  echo "output \"$friendlyName\" {
39*55e87721SMatt Gilbride    value = module.$friendlyName
40*55e87721SMatt Gilbride    sensitive = true
41*55e87721SMatt Gilbride  }" >>generated-outputs.tf
42*55e87721SMatt Gilbride}
43*55e87721SMatt Gilbride
44*55e87721SMatt Gilbridefunction appendAllModules() {
45*55e87721SMatt Gilbride  # Either use given module list, or get a list of all modules in the parent directory.
46*55e87721SMatt Gilbride  if [ -n "$1" ]; then
47*55e87721SMatt Gilbride    modules=$1
48*55e87721SMatt Gilbride  else
49*55e87721SMatt Gilbride    modules=$(listAllModules)
50*55e87721SMatt Gilbride  fi
51*55e87721SMatt Gilbride  IFS=','
52*55e87721SMatt Gilbride  for module in $modules; do
53*55e87721SMatt Gilbride    # Only include modules with a .cloud subdirectory in the generated config.
54*55e87721SMatt Gilbride    if [ -d "../$module/.cloud" ]; then
55*55e87721SMatt Gilbride      appendModule "${module%/}" # Remove possible trailing '/'
56*55e87721SMatt Gilbride    fi
57*55e87721SMatt Gilbride  done
58*55e87721SMatt Gilbride}
59*55e87721SMatt Gilbride
60*55e87721SMatt Gilbride# Ensure current directory is <root>/.cloud
61*55e87721SMatt GilbridegenerateDir="$(cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
62*55e87721SMatt Gilbridepushd "$generateDir/.." >/dev/null
63*55e87721SMatt Gilbride
64*55e87721SMatt Gilbridesource ./helpers/common.sh
65*55e87721SMatt GilbrideinitializeGeneratedFiles
66*55e87721SMatt GilbrideappendAllModules "$1"
67*55e87721SMatt Gilbride
68*55e87721SMatt Gilbridepopd >/dev/null
69