set -e
set -u
set -f
_program_path_find()
{
if [ "${_program_fattening_program_path+set}" = 'set' ]; then
printf '%s\n' "$_program_fattening_program_path"
elif [ "${0%/*}" = "$0" ]; then
if [ -r "$0" ]; then
pwd -P
else
printf '\n'
fi
else
_program_path_find_parentPath()
{
parentPath="${scriptPath%/*}"
if [ -z "$parentPath" ]; then
parentPath='/'
fi
cd "$parentPath" 1>/dev/null
}
if [ "${CDPATH+set}" = 'set' ]; then
unset CDPATH
fi
if command -v realpath 1>/dev/null 2>/dev/null; then
(
scriptPath="$(realpath "$0")"
_program_path_find_parentPath
pwd -P
)
elif command -v readlink 1>/dev/null 2>/dev/null; then
(
scriptPath="$0"
while [ -L "$scriptPath" ]
do
_program_path_find_parentPath
scriptPath="$(readlink "$scriptPath")"
done
_program_path_find_parentPath
pwd -P
)
else
(
scriptPath="$0"
_program_path_find_parentPath
pwd -P
)
fi
fi
}
cargo_musl_wrapper_fail()
{
local message="$1"
printf 'cargo-musl-wrapper:FAIL:%s\n' "$message" 1>&2
exit 1
}
cargo_musl_wrapper_ensureRequiredBinariesArePresent()
{
local reason="$1"
shift 1
local binary
local missing=false
for binary in "$@"
do
if ! command -v "$binary" 1>/dev/null 2>/dev/null; then
printf 'cargo-musl-wrapper:%s\n' "The binary '$binary' needs to be in the path" 1>&2
missing=true
fi
done
if $missing; then
cargo_musl_wrapper_fail "Please make sure that the missing binaries are installed because '$reason'"
fi
}
_cargo_musl_wrapper_prepareForMacOSX_brewInstall()
{
cargo_musl_wrapper_ensureRequiredBinariesArePresent brew
local packageName="$1"
if ! brew ls --versions "$packageName" 1>/dev/null 2>/dev/null; then
brew install "$packageName" 1>&2
fi
}
cargo_musl_wrapper_main()
{
_cargo_musl_wrapper_prepareForMacOSX_brewInstall lemonrock/musl-cross/musl-cross
cd "$(_program_path_find)"/../.. 1>/dev/null 2>/dev/null
CROSS_COMPILE=x86_64-linux-musl- cargo "$@" --target x86_64-unknown-linux-musl
}
cargo_musl_wrapper_main "$@"