#!/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
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

# PASS if we have trouble parsing the .spec file
rpm -q --specfile $DIR_TO_CHECK/*.spec >/dev/null 2>&1 || exit 0

BUILTBINARIES=($(rpm -q --qf "%{name}\n" --specfile $DIR_TO_CHECK/*.spec))
# 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

