108 lines
2.3 KiB
Bash
108 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
# shellcheck disable=SC1090,SC2034
|
|
|
|
checkBashVersion () {
|
|
|
|
if ! declare -n _assoc; then
|
|
echo "You must use bash >= 4.3 (supports namerefs) to use build-wrapper"
|
|
echo "You can still call most functions directly using arguments instead of arrays."
|
|
_printHelpAndExit 1
|
|
fi
|
|
}
|
|
|
|
|
|
getOS () {
|
|
|
|
if [[ -e /etc/os-release ]]; then
|
|
source /etc/os-release
|
|
else
|
|
echo "No /etc/os-release found!"
|
|
echo "Your OS is unsupported"
|
|
_printHelpAndExit 1
|
|
fi
|
|
}
|
|
|
|
|
|
installPackage () {
|
|
|
|
# We will add packages to this array if their command is not available
|
|
local -a _pkg_array
|
|
|
|
# parse commands
|
|
for _pkg in "$@"; do
|
|
_pkg=$(packageOverrides "$_pkg")
|
|
# Insert the package name to test if already installed one element from the end
|
|
# and silence output
|
|
if ! "${_pkg_query_cmd[@]}" "$_pkg" > /dev/null 2>&1; then
|
|
_pkg_array+=("$_pkg")
|
|
else
|
|
echo "$_pkg is already installed!"
|
|
fi
|
|
done
|
|
|
|
if [[ ${#_pkg_array[@]} -ge 1 ]]; then
|
|
[[ -n $_debug ]] && echo "${_install_cmd[@]}" "${_pkg_array[@]}"
|
|
"${_install_cmd[@]}" "${_pkg_array[@]}"
|
|
fi
|
|
}
|
|
|
|
|
|
packageOverrides () {
|
|
|
|
if [[ "$ID" == "ubuntu" || "$ID" == "debian" ]]; then
|
|
if [[ "$1" == "rpm-build" ]]; then
|
|
echo "rpm"
|
|
elif [[ "$1" == "createrepo_c" ]]; then
|
|
echo "createrepo"
|
|
else
|
|
echo "$1"
|
|
fi
|
|
else
|
|
echo "$1"
|
|
fi
|
|
}
|
|
|
|
|
|
getBaseDir () {
|
|
# Get base directory name of where this script resides
|
|
# https://stackoverflow.com/questions/59895/how-to-get-the-source-directory-of-a-bash-script-from-within-the-script-itself#comment54598418_246128
|
|
_basedir=$(dirname "$(readlink -f "$0")")
|
|
}
|
|
|
|
|
|
sourcePlugin () {
|
|
|
|
getBaseDir
|
|
_plugin="$_basedir/plugins/$1"
|
|
if [[ -f "$_plugin" ]]; then
|
|
source "$_plugin"
|
|
else
|
|
echo "Plugin $_plugin does not exist!"
|
|
fi
|
|
}
|
|
|
|
|
|
sourcePlugins () {
|
|
|
|
getBaseDir
|
|
for _file in "$_basedir"/plugins/*/*; do
|
|
[[ -f "$_file" ]] && source "$_file"
|
|
done
|
|
}
|
|
|
|
|
|
pluginExists () {
|
|
|
|
if [[ $# -lt 1 || ! $(type -t "$1") == "function" ]]; then
|
|
echo "Plugin not found"
|
|
_printHelpAndExit 1
|
|
fi
|
|
}
|
|
|
|
|
|
fixPermissions () {
|
|
|
|
# Allow container access to the workdir (SELinux)
|
|
chcon -t container_file_t -R "$1"
|
|
}
|