| #!/usr/bin/env bash |
| # |
| # Copyright 2020 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Used to generate program and project configuration. Expects to be able |
| # to find the protocol buffer generating script in the directory with the |
| # config file at config/generate.sh and expects to be able to find the |
| # lucicfg binary on the path from depot_tools. |
| |
| # Exit if any command fails. |
| set -e |
| |
| readonly script_dir="$(dirname "$(realpath -e "${BASH_SOURCE[0]}")")" |
| source "${script_dir}/common.sh" |
| |
| output_dir="." |
| help="" |
| while [[ $# -gt 0 ]]; do |
| case $1 in |
| --output-dir|-o) |
| output_dir="$2" |
| shift |
| shift |
| ;; |
| --help|-h) |
| help="yes" |
| shift |
| ;; |
| --*) |
| echo "Unknown long option $1" >&2 |
| shift |
| ;; |
| *) |
| break |
| ;; |
| esac |
| done |
| |
| if [[ -n "${help}" ]]; then |
| config_usage |
| exit 0 |
| fi |
| |
| if [[ $# -ne 1 ]]; then |
| config_usage |
| fi |
| |
| readonly file_path="${1}" |
| readonly config_dir="$(dirname "$(realpath -e "${file_path}")")" |
| |
| if [[ -e "${config_dir}"/program/config.star ]]; then |
| echo "Making sure program config is fresh..." |
| "${script_dir}"/gen_config "${config_dir}"/program/config.star |
| fi |
| |
| echo "Building config from source starlark config files." |
| "${script_dir}"/build_config -o "${output_dir}" "$@" |
| echo "Transforming generated protojson config enums" |
| cd "${config_dir}" |
| "${script_dir}"/transform_config_enums "${output_dir}" |
| echo "Transforming generated protojson config to build config" |
| cd "${config_dir}" |
| "${script_dir}"/transform_config "${output_dir}" |