#!/bin/bash

## addtorepo.sh
#  version 0.65
#  transfer pkgs out of mock root into repo

MOCK_HOME=$(dirname $0)
KDE_HOME=$MOCK_HOME/..
# default TARGET
TARGET=testing
# supported ARCHS
ARCHS="i386 x86_64"

while test $# -gt 0 ; do
  ARG=$1
  shift

  case $ARG in
	--list)
	  LIST_ONLY=1
	;;
	--*)
	  # Not used atm
	  OPTS="${OPTS} $ARG"
	  echo "OPTS=${OPTS}"
	;;
	*.src.rpm)
	  if [ -f $ARG ]; then
            SRPMS="$SRPMS $ARG"
          else
            echo "SRPM: $ARG not found..."; exit 1
          fi
	;;
	*.rpm)
	  if [ -f $ARG ]; then
	    RPMS="$RPMS $ARG"	
	  else
	    echo "RPM: $ARG not found..."; exit 1
	  fi
	;;
	stable|testing|unstable|kde47|kde48)
	  TARGET=$ARG
	;;
	*)
	  # TODO: process all RPMS in specified DISTNAME
	  if [ -d "$MOCK_HOME/$ARG" ]; then
	    RPMS="$RPMS $(find $MOCK_HOME/$ARG -mindepth 2 -maxdepth 2 -name '*.rpm')"
          fi
	;;
  esac

done

# If nothing found/specified yet, look for *all* of them
if [ -z "$RPMS" ]; then
  RPMS=$(find $MOCK_HOME -mindepth 3 -maxdepth 3 -name '*.rpm')
fi

if [ -n "$LIST_ONLY" ]; then
  if [ -n "$RPMS" ]; then
    for RPM in $RPMS ; do
      echo $(basename $RPM)
    done
  fi
  exit 0
fi

for SRPM in $SRPMS ; do
  mv $SRPM ${KDE_HOME}/all/SRPMS.${TARGET}/
#  make -C  ${KDE_HOME}/all/SRPMS.${TARGET} >& /dev/null
done

# rm -f $DIRNAME/addtorepo.log

for RPM in $RPMS ; do

  TARGET_DIRS=""
  PKGNAME=$(basename $RPM)
  DIRNAME=$(dirname $RPM) 
  DISTNAME=$(basename $(dirname $DIRNAME))

# skip src.rpms (for now) -- Rex
  if [ "${PKGNAME}" != "$(basename $RPM .src.rpm)" ]; then
    rm -f $RPM && echo "$(date "+%F %T") $PKGNAME deleted" >> $DIRNAME/addtorepo.log \
       && tail -1 $DIRNAME/addtorepo.log && continue
  fi

  DIST=$(echo $DISTNAME | cut -d- -f1)
  if [ ${DIST} == "all" ]; then
    REL=
    ARCH=
#   ARCH=noarch
  else
    REL=$(echo $DISTNAME | cut -d- -f2)
    ARCH=$(echo $DISTNAME | cut -d- -f3)
    RPM_ARCH=$(rpm --nodigest -q --qf="%{arch}" -p $RPM)
    if [ "${RPM_ARCH}" == "noarch" ]; then
      for ARCH in $ARCHS ; do
        TARGET_DIRS="$TARGET_DIRS ${DIST}/${REL}/${ARCH}/RPMS.${TARGET}"
      done
    fi
  fi

  test -z "${TARGET_DIRS}" && TARGET_DIRS="${DIST}/${REL}/${ARCH}/RPMS.${TARGET}"

# sign rpm now, to allow for hardlinks later.
# This hack is horrible, need something better --rex
#  rpmsign-it $RPM >& /dev/null && touch $DIRNAME/..

# move to $TARGET_DIRS repo(s)
  CP_OK=false
  for TARGET_DIR in $TARGET_DIRS ; do
    cp -al $RPM ${KDE_HOME}/${TARGET_DIR}/ && CP_OK=true
    $CP_OK && echo "$(date "+%F %T") $PKGNAME to $TARGET_DIR" >> $DIRNAME/addtorepo.log
    $CP_OK && tail -1 $DIRNAME/addtorepo.log
  done
    $CP_OK && rm -f $RPM && touch $DIRNAME/..
done

set -x
make -C ${MOCK_HOME} 
make -C ${KDE_HOME}  
set -

