#!/bin/sh
. ~/.kdeenv
LOG_DIR=$KDE_SRC
while [ $1 ];do
        case "x$1" in
                x--build)
                        MODES="$MODES build"
                        ;;
                x--update)
                        MODES="$MODES update"
                        ;;
                x--clean)
                        MODES="$MODES clean"
                        ;;
                x--init)
                        MODES="$MODES init"
                        ;;
                x--*)
                        echo "Unknown option $1"
                        exit 1
                        ;;
                x*)
                        PACKAGES="$PACKAGES $1"
                        ;;
        esac
        shift
done

> $LOG_DIR/failures

if [ ! "$MODES" ];then
        MODES="update build"
fi

if echo "$MODES" | grep 'init' >/dev/null; then
        INIT=yes
fi

if echo "$MODES" | grep 'build' >/dev/null; then
        BUILD=yes
fi

if echo "$MODES" | grep 'update' >/dev/null; then
        UPDATE=yes
fi

if echo "$MODES" | grep 'clean' >/dev/null; then
        CLEAN=yes
fi

if [ ! "$PACKAGES" ];then
        PACKAGES=$(cat $KDE_SRC/packages);
fi

if [ "$UPDATE" ]; then
        for i in $PACKAGES;do
                echo "Updating $i..."
                svn up $KDE_SRC/$i || {
                        echo "Update failed. Cleaning $i..."
                        svn cleanup $KDE_SRC/$i
                        echo "Updating $i again..."
                        svn up $KDE_SRC/$i
                }
        done
fi

if [ "$INIT" ]; then
    for i in $PACKAGES;do
        echo "Starting first build of $i..."
        cs $i
        cmakekde
    done
fi

if [ "$CLEAN" ]; then
        for i in $PACKAGES;do
                echo "Cleaning $i..."
                cb $i
                make clean
        done
fi

if [ "$BUILD" ];then
        for i in $PACKAGES;do
                echo "Building $i..."
                cb $i
                make -j2 VERBOSE=1
                RET=$?
                if [ $RET -eq 0 ];then
                        echo "Installing $i..."
                        make install
                        RET=$?
                        if [ $RET -eq 0 ];then
                                echo "Success!"
                                SUCCEED="$SUCCEED $i"
                        else
                                echo "Failed to install $i"
                                FAILURES="$FAILURES $i"
                        fi
                else
                        echo "Failed to build $i"
                        FAILURES="$FAILURES $i"
                fi
        done
fi

if [ "$FAILURES" ]; then
        echo "Failures: " $FAILURES | tee > $LOG_DIR/failures
fi

if [ "$SUCCEED" ]; then
        echo "Success: " $SUCCEED | tee > $LOG_DIR/successes
fi