#!/bin/sh
#
# (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
#
# DISTROS="nazwy katalogów dystrybucji z FTP/dists/*
# nazwadistros_ARCHS="lista architektur dla nazwadistros"
# Symlinki sa robione z force wiec by miec w poolu symlinki
# do najnowszej wersji softu trzeba w DISTROS wpisywac
# nazwy najstarszych dystrybucji jako pierwsze.

umask 002
FTPROOT="/home/services/ftp/pld"
DISTROS="ac th"

ra_SRCDIRS="PLD/SRPMS/SRPMS updates/general/SRPMS updates/security/SRPMS"
ra_BINDIRS="PLD/%%/PLD/RPMS updates/general/%% updates/security/%%"

ac_SRCDIRS="PLD/SRPMS/SRPMS"
ac_BINDIRS="PLD/%%/PLD/RPMS"

th_SRCDIRS="PLD/SRPMS/RPMS"
th_BINDIRS="PLD/%%/RPMS"

ra_ARCHS="i386 i586 i686 sparc alpha ppc SRPMS"
ac_ARCHS="athlon amd64 i386 i586 i686 sparc alpha ppc SRPMS"
th_ARCHS="i486 i686 x86_64 noarch SRPMS"

for distros in $DISTROS; do
  eval ARCHS="\$${distros}_ARCHS"
  echo "Doing distribution: ${distros}"

  for archs in ${ARCHS}; do
    echo -n "Doing ${distros} - architecture: ${archs}:"
    case "${archs}" in
      SRPMS)
	  case "${distros}" in
		  th)
		  	srpmsdir="SRPMS/RPMS"
			;;
		  *)
		    srpmsdir="SRPMS/SRPMS"
			;;
		esac
      find ${FTPROOT}/dists/${distros}/PLD/${srpmsdir} -type f -name "*.rpm" | while read path; do
	RPM_GROUP=""
	RPM_NAME=""
	eval `rpm -qp --queryformat "RPM_GROUP='%{GROUP}'\nRPM_NAME='%{NAME}'\n" \"$path\" 2> /dev/null`
	BN="`basename \"$path\"`"
	if [ -n "$RPM_NAME" ]; then
	  RPM_LETTER="`printf '%.1s' "$RPM_NAME"`"
	  RPM_LETTER="`echo "$RPM_LETTER" | tr '[:upper:]' '[:lower:]'`"
	  if [ ! -d "${FTPROOT}/pool/${RPM_LETTER}/${RPM_NAME}" ]; then
	    mkdir -p "${FTPROOT}/pool/${RPM_LETTER}/${RPM_NAME}"
	  fi
	  ln -sf "../../../dists/${distros}/PLD/${srpmsdir}/$BN" "${FTPROOT}/pool/${RPM_LETTER}/${RPM_NAME}/${BN}"

	  echo -n "+"
	fi
      done
      ;;
      *)
	  case "${distros}" in
		  th)
		  bygroupdir="by-group"
		  rpmsdir="RPMS"
		  ;;
		  *)
		  bygroupdir="PLD/by-group"
		  rpmsdir="PLD/RPMS"
		  ;;
	  esac
      cd ${FTPROOT}/dists/${distros}/PLD/${archs}/${bygroupdir} || continue
      find ${FTPROOT}/dists/${distros}/PLD/${archs}/${rpmsdir} -type f -name "*.rpm" | \
      while read path; do
	RPM_GROUP=""
	RPM_NAME=""
	eval `rpm -qp --queryformat "RPM_GROUP='%{GROUP}'\nRPM_NAME='%{NAME}'\n" \"$path\" 2> /dev/null`
	BN="`basename \"$path\"`"
	if [ -n "$RPM_GROUP" ]; then
	  DIR="$RPM_GROUP"
	  if [ ! -d "$DIR" ]; then
	    mkdir -p "$DIR"
	  fi
	  ln -sf "../../RPMS/$BN" "$DIR/$BN"
	  echo -n "."
	fi
	if [ -n "$RPM_NAME" ]; then
	  RPM_LETTER="`printf '%.1s' "$RPM_NAME"`"
	  RPM_LETTER="`echo "$RPM_LETTER" | tr '[:upper:]' '[:lower:]'`"
	  if [ ! -d "${FTPROOT}/pool/${RPM_LETTER}/${RPM_NAME}" ]; then
	    mkdir -p "${FTPROOT}/pool/${RPM_LETTER}/${RPM_NAME}"
	  fi
	  ln -sf "../../../dists/${distros}/PLD/${archs}/${rpmsdir}/$BN" "${FTPROOT}/pool/${RPM_LETTER}/${RPM_NAME}/${BN}"
	  echo -n "+"
	fi
      done
      ;;
    esac

    symlinks -drsc . > /dev/null 2>&1
    symlinks -drsc . > /dev/null 2>&1
    echo
  done
done

cd ${FTPROOT}/pool/
symlinks -drsc . > /dev/null 2>&1
symlinks -drsc . > /dev/null 2>&1

echo
