#!/bin/bash # Copyright (c) 2016-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # * Neither the name of NVIDIA CORPORATION nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY # OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Gather parts in alpha order shopt -s nullglob extglob _SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" declare -a _PARTS=( "${_SCRIPT_DIR}/entrypoint.d"/*@(.txt|.sh) ) shopt -u nullglob extglob print_repeats() { local -r char="$1" count="$2" local i for ((i=1; i<=$count; i++)); do echo -n "$char"; done echo } print_banner_text() { # $1: Banner char # $2: Text local banner_char=$1 local -r text="$2" local pad="${banner_char}${banner_char}" print_repeats "${banner_char}" $((${#text} + 6)) echo "${pad} ${text} ${pad}" print_repeats "${banner_char}" $((${#text} + 6)) } # Execute the entrypoint parts for _file in "${_PARTS[@]}"; do case "${_file}" in *.txt) cat "${_file}";; *.sh) source "${_file}";; esac done echo # This script can either be a wrapper around arbitrary command lines, # or it will simply exec bash if no arguments were given if [[ $# -eq 0 ]]; then exec "/bin/bash" else exec "$@" fi