#!/bin/sh

REPO='/var/ftp/pub/contrib/slackware/packages'

if [ $# -lt 1 ]; then
  echo "Usage: $0 <source directory>"
  exit 1
fi

PKG_DIR=$1
CWD=$(pwd)
SLACK_DIR=$(basename $CWD)
OLD_DIR=${REPO}/old/$SLACK_DIR

for pkg in `find $PKG_DIR -type f -name '*.t[bglx]z' -maxdepth 1 -print`; do
  OLD_PKG=""
  OLD_SRC=""
  echo "Package <${pkg}>:" 
  PKG_FILE=$(basename $pkg)
  PKG_NAME=$(echo $PKG_FILE | rev | cut -d'-' -f4- | rev)
  PKG_VER=$(echo $PKG_FILE | rev | cut -d'-' -f3 | rev)

  OLD_PKG=$(find $CWD -type f -name "${PKG_NAME}-[0-9]*.t[bglx]z")
  if [ "$OLD_PKG" != "" ]; then
    OLD_PKG_NAME=$(basename $OLD_PKG)
    OLD_PKG_VER=$(echo ${OLD_PKG_NAME} | rev | cut -d'-' -f3- | rev)
    echo -n " Moving './${OLD_PKG_NAME/%.t[bglx]z/.t*}' to '${OLD_DIR}'... "
    mv ${OLD_PKG/%.t[bglx]z/.t*} $OLD_DIR
    echo "Done."
  
    OLD_SRC=$(find $CWD/source/ -type d -name "${OLD_PKG_VER}")
    if [ "$OLD_SRC" != "" ]; then
      OLD_SRC_DIR=$(echo $OLD_SRC | rev | cut -d'/' -f1-3 | rev)
      if [ ! -e $OLD_SRC_DIR ]; then
        mkdir -p $OLD_SRC_DIR
      fi
      echo -n " Moving '${OLD_SRC_DIR}' to '$OLD_DIR/${OLD_SRC_DIR}'... "
      mv $OLD_SRC $OLD_DIR/$OLD_SRC_DIR
      echo "Done."
    fi
  fi

  echo -n " Copying new package ${PKG_FILE/%.t[bglx]z/.t*}... "
  cp -a ${pkg/%.t[bglx]z/.t*} $CWD
  echo "Done."

  if [ "$OLD_SRC" != "" ]; then
    PKG_CAT=$(echo $OLD_SRC | rev | cut -d'/' -f2 | rev)
  else
    echo -n " Enter category for package '$PKG_NAME' and press [ENTER]: "
    read PKG_CAT
  fi 
  # TODO: Move to another directory if already exists (e.g. for rebuilds of the same version)
  PKG_SRC=$PKG_DIR/$PKG_CAT/$PKG_NAME
  echo -n " Copying source '$PKG_SRC' to './source/$PKG_CAT/${PKG_NAME}-${PKG_VER}'... "
  cp -a $PKG_SRC $CWD/source/$PKG_CAT/${PKG_NAME}-${PKG_VER}
  echo "Done."
  # TODO: List packages for change log (with Rebuilt, Upgraded or Added)
done

