[[ -n "$LIBMAKEPKG_UTIL_UTIL_SH" ]] && return
LIBMAKEPKG_UTIL_UTIL_SH=1
MAKEPKG_LIBRARY=${MAKEPKG_LIBRARY:-'@libmakepkgdir@'}
source "$MAKEPKG_LIBRARY/util/error.sh"
source "$MAKEPKG_LIBRARY/util/message.sh"
in_array() {
local needle=$1; shift
local item
for item in "$@"; do
[[ $item = "$needle" ]] && return 0 done
return 1 }
is_array() {
local v=$1
local ret=1
if [[ ${!v@a} = *a* ]]; then
ret=0
fi
return $ret
}
canonicalize_path() {
local path="$1"
if [[ -d $path ]]; then
(
cd_safe "$path"
pwd -P
)
else
printf "%s\n" "$path"
fi
}
dir_is_empty() {
(
shopt -s dotglob nullglob
files=("$1"/*)
(( ${#files} == 0 ))
)
}
cd_safe() {
if ! cd "$1"; then
error "$(gettext "Failed to change to directory %s")" "$1"
plainerr "$(gettext "Aborting...")"
exit 1
fi
}
ensure_writable_dir() {
local dirtype="$1" dirpath="$2"
if ! mkdir -p "$dirpath" 2>/dev/null; then
error "$(gettext "Failed to create the directory \$%s (%s).")" "$dirtype" "$dirpath"
return 1
elif [[ ! -w $dirpath ]]; then
error "$(gettext "You do not have write permission for the directory \$%s (%s).")" "$dirtype" "$dirpath"
return 1
fi
return 0
}
source_safe() {
local shellopts=$(shopt -p extglob)
shopt -u extglob
if ! source "$@"; then
error "$(gettext "Failed to source %s")" "$1"
exit $E_MISSING_FILE
fi
eval "$shellopts"
}
append_once() {
local -n var=$1
local value=$2
if [[ ! $var =~ (^| )"$value"($| ) ]]; then
var+=" $value"
fi
}