blob: 60459c8747f303cbfb332239537ac35403844c10 [file] [log] [blame]
#!/bin/bash
# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#### CATEGORY=Source tree
### regenerates golden files in the source tree
## Usage: fx regen-goldens PATTERN ... [FLAGS]
##
## Regenerates golden files for tools that match the given substring patterns.
## If no patterns are provided, regenerates for all tools. Forwards all flags to
## `fx test`, such as -o/--output to show test output (files being regenerated).
##
## Examples:
##
## fx regen-goldens # regen all goldens
## fx regen-goldens fidlgen # regen goldens for all fidlgen_* tools
## fx regen-goldens fidlc -o # regen fidlc goldens, printing verbose output
##
## Supported tools:
## fidlc, fidldoc, fidlgen_dart, fidlgen_go, fidlgen_hlcpp, fidlgen_libfuzzer,
## fidlgen_llcpp, fidlgen_rust, fidlgen_syzkaller
set -eo pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $?
fx-config-read
readonly all_tools=(
"fidlc"
"fidldoc"
"fidlgen_dart"
"fidlgen_go"
"fidlgen_hlcpp"
"fidlgen_libfuzzer"
"fidlgen_llcpp"
"fidlgen_rust"
"fidlgen_syzkaller"
)
tools=()
flags=()
for arg in "$@"; do
case "$arg" in
-h|--help) fx-command-help; exit ;;
-*) flags+=("$arg") ;;
*)
found=false
for t in "${all_tools[@]}"; do
if [[ "$t" == *"$arg"* ]]; then
tools+=("$t")
found=true
fi
done
if [[ "$found" == false ]]; then
echo "No tools match the pattern '$arg'." >&2
echo "Run \`fx regen-goldens -h\` to see supported tools." >&2
exit 1
fi
;;
esac
done
if [[ "${#tools[@]}" -eq 0 ]]; then
tools=("${all_tools[@]}")
fi
tests=()
for t in "${tools[@]}"; do
tests+=("${t}_golden_tests")
done
echo "Regenerating goldens for: ${tools[*]}"
"$(find_executable test)" "${tests[@]}" "${flags[@]}" -- --regen