#!/bin/bash

test "$1" = "--verbose" && { VERBOSE=true ; shift ; }
test "$1" = "--batchmode" && { BATCHMODE=true ; shift ; }
DIR_TO_CHECK="$1"
DESTINATIONDIR="$2"
test -n "$DIR_TO_CHECK" || DIR_TO_CHECK=`pwd`
HELPERS_DIR="/usr/lib/obs/service/source_validators/helpers"
$HELPERS_DIR/check_input_filename "$DIR_TO_CHECK" || exit 1
. $HELPERS_DIR/functions
test -z "$DESTINATIONDIR" -a -d "$DIR_TO_CHECK/.osc" && DESTINATIONDIR="$DIR_TO_CHECK/.osc"

containsElement () {
  local e
  for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
  return 1
}

# PASS if there is no baselibs.conf
[ -f "$DIR_TO_CHECK/baselibs.conf" ] || exit 0

BUILTBINARIES=()
while read recipe flavor; do
	BUILTBINARIES+=($($HELPERS_DIR/spec_query --specfile "${DIR_TO_CHECK}/${recipe}" --print-subpacks \
	--buildflavor "$flavor")) || exit 0
	BUILTBINARIES+=($($HELPERS_DIR/spec_query --specfile "${DIR_TO_CHECK}/${recipe}" --print-subpacks \
	--buildflavor "$flavor" --no-conditionals)) || exit 0
done < <(spec_build_flavors "$DIR_TO_CHECK")

# add known keywords from baselibs specification
BUILTBINARIES+=('arch' 'targetname' 'targettype')
BASELIBSREF=$(grep -o "^[a-zA-Z0-9.+_-]\+" "$DIR_TO_CHECK/baselibs.conf")

RETURN=0
for rpm in $BASELIBSREF; do
	if ! containsElement "$rpm" "${BUILTBINARIES[@]}"; then
		echo "ERROR: '$rpm' referenced in baselibs.conf is not being built"
		RETURN=1
	fi
done

exit $RETURN

