#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright (C) 2014 Vladimir Serbinenko <phcoder@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc.
#
# DESCR: Check that every board has a meaningful board_info.txt

LC_ALL=C export LC_ALL
for mobodir in $(git diff --diff-filter ACMR --name-only src/mainboard | sed -n 's,^\(src/mainboard/[^/]*/[^/]*\)/.*$,\1,p'|sort|uniq); do
    board_info="$mobodir/board_info.txt"
    if ! [ -f "$board_info" ]; then
       echo "No $board_info found"
       exit 1
    fi
    category="$(sed -n 's#^Category: \(.*\)$#\1#p' < "$board_info")"
    case "$category" in
	desktop|server|laptop|half|mini|settop|"eval"|sbc|emulation|misc)
	    ;;
	"")
	    echo "$board_info doesn't contain 'Category' tag"
	    exit 1
	    ;;
	*)
	    echo "$board_info specifies unknown category '$category'"
	    exit 1
	    ;;
    esac
done

exit 0
