blob: b5239deca84ea02d1fb4b08498f81f441ffe5188 [file] [log] [blame]
#!/bin/bash
# Copyright 2024 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.
# This script generates the ctf_releases.gni file. It is intended to be
# called by a git-hook after prebuilts are downloaded.
#
# The ctf_releases.gni file is used by the build to determine which
# CTF releases were downloaded from CIPD as prebuilts so that they can
# be run as tests against the current platform image.
set -e
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
FUCHSIA_DIR="$(dirname $(dirname $(dirname $(dirname "${script_dir}"))))"
# The CTF manifest file could be in //integration/fuchsia/ctf/all,
# //integration/platform/fuchsia/ctf/all or //integration/ctf/all
# depending on the integration repository the user uses.
if [[ -f "${FUCHSIA_DIR}/integration/platform/fuchsia/ctf/all" ]]; then
CTF_MANIFEST="${FUCHSIA_DIR}/integration/platform/fuchsia/ctf/all"
elif [[ -f "${FUCHSIA_DIR}/integration/fuchsia/ctf/all" ]]; then
CTF_MANIFEST="${FUCHSIA_DIR}/integration/fuchsia/ctf/all"
elif [[ -f "${FUCHSIA_DIR}/integration/ctf/all" ]]; then
CTF_MANIFEST="${FUCHSIA_DIR}/integration/ctf/all"
else
echo "Error: Failed to find CTF manifest file." 1>&2
exit 1
fi
DESTINATION="${FUCHSIA_DIR}/sdk/ctf/build/internal/ctf_releases.gni"
YEAR=$(date +%Y)
echo \
"# Copyright ${YEAR} 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.
# This file is autogenerated by create_ctf_releases_gni.sh
# Do not edit manually
ctf_releases = [" \
> "${DESTINATION}"
echo "Finding CTF releases..."
# The CTF integration manifest has one <localimport> tag for each version:
# <localimport file="f16"/>
# This script looks for all the localimport tags in the file and extracts the
# "file" field.
#
# TODO(liyl): Technically we shouldn't use regex to parse XML. Consider rewriting
# it with more robust XML parsing logic.
IFS=$'\n'
for release in $(grep -Po '(?<=localimport file=").*?(?=")' ${CTF_MANIFEST}); do
echo " Have release for ${release}... adding"
echo " \"${release}\"," >> "${DESTINATION}"
done
echo "]" >> "${DESTINATION}"
echo "Wrote output to ${DESTINATION}"