#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

ARCHS="amd64 i386 all"

## version
version() {
    . /usr/share/pbuilder-scripts/version
    echo "$(basename $0): ${VERSION}"
}

if [ -f /etc/jenkins/buildpackage.conf ]; then
    source /etc/jenkins/buildpackage.conf
fi

if [ -f /etc/jenkins/targets.conf ]; then
   TARGETS=$(cat /etc/jenkins/targets.conf)
fi



## is_valid_line
is_valid_line() {
    [[ ! -e ${SOURCEPATH}/build-failed+${TARGET}+${REPOSITORY}+${DISTRI}+${BUILDARCH} ]] && touch ${SOURCEPATH}/build-failed+${TARGET}+${REPOSITORY}+${DISTRI}+${BUILDARCH}
    grep "$REPOLINE" ${SOURCEPATH}/build-failed+${TARGET}+${REPOSITORY}+${DISTRI}+${BUILDARCH} &>/dev/null
    RESULT=$?
    case ${RESULT} in
        1)
             if [ ! -f ${SOURCEPATH}/needed+${TARGET}+${REPOSITORY}+${DISTRI}+${BUILDARCH} ]; then
                 echo ${REPOLINE} ${REPODIR} > ${SOURCEPATH}/needed+${TARGET}+${REPOSITORY}+${DISTRI}+${BUILDARCH}
                 echo "${REPOLINE} ${REPODIR} > ${SOURCEPATH}/needed+${TARGET}+${REPOSITORY}+${DISTRI}+${BUILDARCH}"
             fi
             ;;
        *)
             echo "ERROR: $REPOLINE : RESULT $RESULT : ARCH $BUILDARCH"
             ;;
    esac
    return ${RESULT}
}


## Main
[ ! -d ${SOURCEPATH} ] && mkdir -p ${SOURCEPATH} && echo ${SOURCEPATH}





for i in ${TARGETS}; do
    TARGET=$(echo ${i} | awk -F'|' '{ print $1 }')
    REPOSITORY=$(echo ${i} | awk -F'|' '{ print $2 }')
    DISTRI=$(echo ${i} | awk -F'|' '{ print $3 }')
    REPODIR=$(echo ${i} | awk -F'|' '{ print $4 }')
    echo -e " ---------------"
    echo -e "TARGET:      $TARGET"
    echo -e "REPOSITORY:  $REPOSITORY"
    echo -e "DISTRI:      $DISTRI"
    echo -e "REPODIR:     $REPODIR"


    for l in ${ARCHS}; do
        REPOBASE="${REPOPATH}/${REPODIR}"
        IFS=$'\n'
        for m in $(ssh ${USER}@${HOST}  "cd ${REPOBASE}; reprepro build-needing ${DISTRI}  ${l}"); do
            REPOLINE=$m
            BUILDARCH=${l}
            is_valid_line
        done
        unset IFS
    done
done
