blob: e868b5e489767160a2f29e7fc05c06458260a61c [file] [log] [blame]
#!/usr/bin/env bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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
#
# http://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.
# Starts group for GitHub Actions - makes logs much more readable
function start_end::group_start {
if [[ ${PRINT_INFO_FROM_SCRIPTS} != "false" ]]; then
if [[ ${GITHUB_ACTIONS=} == "true" ]]; then
echo "::group::${1}"
else
echo
echo "${1}"
echo
fi
fi
}
# Ends group for GitHub Actions
function start_end::group_end {
if [[ ${PRINT_INFO_FROM_SCRIPTS} != "false" ]]; then
if [[ ${GITHUB_ACTIONS=} == "true" ]]; then
echo -e "\033[0m" # Disable any colors set in the group
echo "::endgroup::"
fi
fi
}
#
# Starts the script.
# If VERBOSE_COMMANDS variable is set to true, it enables verbose output of commands executed
# Also prints some useful diagnostics information at start of the script if VERBOSE is set to true
#
function start_end::script_start {
START_SCRIPT_TIME=$(date +%s)
verbosity::print_info "Running '${COLOR_GREEN}$(basename "$0")${COLOR_RESET}'"
if [[ "${GITHUB_ACTIONS=}" == "true" && ${VERBOSE_COMMANDS:="false"} == "false" ]]; then
return
fi
if [[ ${VERBOSE_COMMANDS:="false"} == "true" ]]; then
verbosity::print_info
verbosity::print_info "${COLOR_BLUE}Variable VERBOSE_COMMANDS Set to \"true\"${COLOR_RESET}"
verbosity::print_info "${COLOR_BLUE}You will see a lot of output${COLOR_RESET}"
verbosity::print_info
set -x
else
verbosity::print_info "You can increase verbosity by running 'export VERBOSE_COMMANDS=\"true\""
if [[ ${SKIP_CACHE_DELETION:=} != "true" ]]; then
verbosity::print_info "And skip deleting the output file with 'export SKIP_CACHE_DELETION=\"true\""
fi
verbosity::print_info
set +x
fi
}
#
# Trap function executed always at the end of the script. In case of verbose output it also
# prints the exit code that the script exits with. Removes verbosity of commands in case it was run with
# command verbosity and in case the script was not run from Breeze (so via ci scripts) it displays
# total time spent in the script so that we can easily see it.
#
function start_end::script_end {
#shellcheck disable=2181
local exit_code=$?
if [[ ${exit_code} != 0 ]]; then
# Finish previous group so that output can be written
start_end::group_end
echo
echo "${COLOR_RED}ERROR: The previous step completed with error. Please take a look at output above ${COLOR_RESET}"
echo
verbosity::print_info "${COLOR_RED}###########################################################################################${COLOR_RESET}"
verbosity::print_info "${COLOR_RED} EXITING WITH STATUS CODE ${exit_code}${COLOR_RESET}"
verbosity::print_info "${COLOR_RED}###########################################################################################${COLOR_RESET}"
fi
if [[ ${VERBOSE_COMMANDS:="false"} == "true" ]]; then
set +x
fi
if [[ ${#FILES_TO_CLEANUP_ON_EXIT[@]} -gt 0 ]]; then
rm -rf -- "${FILES_TO_CLEANUP_ON_EXIT[@]}"
fi
local end_script_time
end_script_time=$(date +%s)
local run_script_time
run_script_time=$((end_script_time-START_SCRIPT_TIME))
verbosity::print_info
verbosity::print_info "Finished the script ${COLOR_GREEN}$(basename "$0")${COLOR_RESET}"
verbosity::print_info "Elapsed time spent in the script: ${COLOR_BLUE}${run_script_time} seconds${COLOR_RESET}"
if [[ ${exit_code} == "0" ]]; then
verbosity::print_info "Exit code ${COLOR_GREEN}${exit_code}${COLOR_RESET}"
else
verbosity::print_info "Exit code ${COLOR_RED}${exit_code}${COLOR_RESET}"
fi
verbosity::print_info
}