Files
ports/ports/Mk/Scripts/install-depends.sh
T

44 lines
943 B
Bash
Executable File

#!/bin/sh
set -eu
if [ "$#" -lt 3 ]; then
printf '%s\n' \
"usage: install-depends.sh PORTSDIR PACKAGE_COMMAND BMAKE DEPENDENCY..." >&2
exit 2
fi
portsdir=$1
package_command=$2
bmake=$3
shift 3
case "$bmake" in
/*/bmake|bmake) ;;
*) printf '%s\n' "invalid BSD make command: $bmake" >&2; exit 1 ;;
esac
for dependency in "$@"; do
case "$dependency" in
*:*/*) ;;
*) printf '%s\n' "invalid dependency: $dependency" >&2; exit 1 ;;
esac
name=${dependency%%:*}
origin=${dependency#*:}
category=${origin%%/*}
port=${origin#*/}
case "$origin" in
*/*/*) printf '%s\n' "invalid dependency origin: $origin" >&2; exit 1 ;;
esac
for component in "$name" "$category" "$port"; do
case "$component" in
""|[!a-z]*|*[!a-z0-9-]*)
printf '%s\n' "invalid dependency: $dependency" >&2
exit 1
;;
esac
done
if ! "$package_command" status "$name" >/dev/null 2>&1; then
"$bmake" -C "$portsdir/$origin" install
fi
done