diff options
Diffstat (limited to 'misc-scripts')
-rwxr-xr-x | misc-scripts/find-dupes | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/misc-scripts/find-dupes b/misc-scripts/find-dupes new file mode 100755 index 0000000..82cd1a4 --- /dev/null +++ b/misc-scripts/find-dupes @@ -0,0 +1,77 @@ +#!/bin/bash + +if [ $# -ne 2 ]; then + echo "usage: $(basename $0) <reponame> <arch>" + exit 1 +fi + +reponame=$1 +arch=$2 + +##### Arch specific stuff. TODO make this configurable ##### +ftppath="/home/ftp/$reponame/os/$arch/" +############################################################ + +if [ ! -d "$ftppath" ]; then + echo "FTP path '$ftppath' does not exist" + exit 1 +fi + +if [ ! -f /etc/makepkg.conf ]; then + echo "/etc/makepkg.conf not found! Aborting" + exit 1 +fi + +. /etc/makepkg.conf + +cd $ftppath + +# Get the package name from the filename +# hackish, but should work for now +getpkgname() { + local tmp + + tmp=${1##*/} + tmp=${tmp%$PKGEXT} + tmp=${tmp%-$CARCH} + echo ${tmp%-*-*} +} + +showdupes() { + done="" + for i in *.pkg.tar.gz; do + pkgname=$(getpkgname $i) + if [ "$pkgname" = "$1" ]; then + lastmod="$(stat -c %y $i | cut -d. -f1)" + fname="$(basename $i)" + + echo "$lastmod $fname" + + done=1 + else + if [ "$done" = "1" ]; then + return + fi + fi + done +} + +echo "Scanning for duplicate packages in '$reponame' ($arch)" +DUPES="" +lastpkg="" + +for pkg in *.pkg.tar.gz; do + pkgname="$(getpkgname $pkg)" + if [ "$lastpkg" = "$pkgname" ]; then + DUPES="$DUPES $pkgname" + fi + lastpkg=$pkgname +done + +if [ "$DUPES" ]; then + DUPES="$(echo $DUPES | sed 's| |\n|g' | sort -u)" + echo "Date Filename" + for dupe in $DUPES; do + showdupes $dupe + done +fi |