lix/lib/dependencies.sh

34 lines
977 B
Bash

#!/bin/sh -e
. "$LIXROOT/lib/built.sh"
. "$LIXROOT/lib/reverse.sh"
. "$LIXROOT/lib/versionpasses.sh"
dependencies() { # <contents of a 'deps' file>
seen=""
deps="$(echo "$1" | while read line; do
eval "printf '%s\n' "\"$line\"""
done)"
echo "$deps" | while read line; do
[ "$line" ] || continue;
# eval inline expressions and convert all whitespace to single spaces.
line="$(echo "$line" | tr -s '[:space:]' ' ')"
dep="$(echo "$line" | cut -d' ' -f1)"
depreq="$(echo "$line" | cut -d' ' -f2-)"
depver="$(built "$dep" | reverse | while read ver; do
[ "$ver" ] || continue;
if [ "$(versionpasses "$dep" "$ver" "$depreq")" = "yes" ]; then
echo "$ver"
break
fi
done)"
resolved="$(printf '%s\t%s\n' "$dep" "$depver")"
echo "$seen" | grep -q "^$resolved\$" || echo "$resolved"
seen="$resolved\n$seen"
done
}