#!/bin/bash
[ -e /etc/autodist/config ] && . /etc/autodist/config
[ -e /etc/autodist/autoport ] && . /etc/autodist/autoport

[ "${RPMS_CTIME_OLD}" -a "${SRPMS_CTIME_OLD}" -a "${SOURCES_CTIME_OLD}" \
  -a "${BUILD_CTIME_OLD}" -a "${TMP_CTIME_OLD}" ] || {
   echo "autodist-cleanold: ERROR: *_CTIME_OLD variables need to be set in config; cleaning skipped."
   exit 0
}

function clean() {
   dir=$1
   [ "$VERBOSE" ] && echo "Cleaning from base directory $dir..."
   [ -e $dir/ ] && find $dir/ -mindepth 1 -maxdepth 1 -name "pipe\:\[*" -exec rm -f {} \;
   [ -e $dir/RPM/SPECS/ ] && find $dir/RPM/SPECS/ -mindepth 1 -maxdepth 1 -type f -not -name "*.spec*" -exec rm -f {} \;
   [ -e $dir/.autoport/${AUTOPORT_ARCH[$i]} ] && find /var/autodist/.autoport/${AUTOPORT_ARCH[$i]} -mindepth 1 -maxdepth 1 -ctime ${TMP_CTIME_OLD} -exec rm -f {} \;
   for arch in ${AUTODIST_ARCHS[*]}; do
     [ -e $dir/RPM/RPMS/$arch/ ] && find $dir/RPM/RPMS/$arch/ -mindepth 1 -maxdepth 1 -type f -mtime ${RPMS_CTIME_OLD} -exec rm -f {} \;
   done
   [ -e $dir/RPM/RPMS/noarch/ ] && find $dir/RPM/RPMS/noarch/ -mindepth 1 -maxdepth 1 -type f -mtime ${RPMS_CTIME_OLD} -exec rm -f {} \;
   if [ -e $dir/RPM/BUILD/ ]; then
      find $dir/RPM/BUILD/ -mindepth 1 -maxdepth 1 -type d -ctime ${BUILD_CTIME_OLD} -exec rm -rf {} \;
      # delete older package duplicates
      find $dir/RPM/BUILD/ -maxdepth 1 | grep -V SPECPARTS | sort -V | \
      while read curr; do
         if [ "${curr/-[0-9._]*}" = "${last/-[0-9._]*}" -a "${last}" ]; then
            rm -rf $last
         fi
         last=$curr;
      done
   fi
   [ -e $dir/RPM/SOURCES/ ] && {
      find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_CTIME_OLD} -a ! -name "*.patch" -exec rm -rf {} \;
      find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_ARCHIVES_CTIME_OLD} -a -name "*.tar.xz" -exec rm -rf {} \;
      find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_ARCHIVES_CTIME_OLD} -a -name "*.tar.bz2" -exec rm -rf {} \;
      find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_ARCHIVES_CTIME_OLD} -a -name "*.tar.gz" -exec rm -rf {} \;
      find $dir/RPM/SOURCES/ -mindepth 1 -maxdepth 1 -type f -ctime ${SOURCES_PATCH_CTIME_OLD} -a -name "*.patch" -exec rm -rf {} \;
   }
   [ -e $dir/RPM/SRPMS/ ] && find $dir/RPM/SRPMS/ -mindepth 1 -maxdepth 1 -type f -mtime ${SRPMS_CTIME_OLD} -exec rm -f {} \;
}

for i in `seq 0 ${#AUTOPORT_ARCH[*]}`; do
   [ "${AUTOPORT_DISABLE[$i]}" != "" ] && continue
   if [ "${AUTOPORT_CHROOT[$i]}" ]; then
      a=${AUTOPORT_CHROOT[$i]}
      clean /var/autoport/$a/usr/src
      [ -e /var/autoport/$a/var/autodist/RPM/RPMS/ ] && \
         clean /var/autoport/$a/var/autodist
      [ -e /var/autoport/$a/var/tmp/autodist ] && \
         find /var/autoport/$a/var/tmp/autodist/ -mindepth 1 -maxdepth 1 -type f -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
      find /var/autoport/$a/tmp/ -mindepth 1 -maxdepth 1 -type f -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
      [ -e /var/autoport/$a/usr/bin/ccache ] && autoport-chroot $a ccache -C
      [ -e /var/autoport/$a/usr/bin/yarn ] && autoport-chroot $a yarn cache clean
   elif [ "${AUTOPORT_UPDATE[$i]}" ]; then
      clean /var/autodist
      find /var/autodist-tmp/ -mindepth 1 -maxdepth 1 -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
      [ -e /usr/bin/ccache ] && sudo -u autodist ccache -C
      [ -e /usr/bin/yarn ] && sudo -u autodist yarn cache clean
   elif [ "${AUTOPORT_NATIVE[$i]}" -a "${AUTOPORT_CHROOT_USER[$i]}" ]; then
      WORKINGHOME=`getent passwd ${AUTOPORT_CHROOT_USER[$i]} | cut -d: -f6`
      if [ -e $WORKINGHOME ]; then
         clean $WORKINGHOME
      fi
      find /var/autodist-tmp/ -mindepth 1 -maxdepth 1 -ctime ${TMP_CTIME_OLD} -exec rm -rf {} \;
      [ -e /usr/bin/ccache ] && sudo -u ${AUTOPORT_CHROOT_USER[$i]} ccache -C
      [ -e /usr/bin/yarn ] && sudo -u ${AUTOPORT_CHROOT_USER[$i]} yarn cache clean
   fi
done
