123456789101112131415161718192021222324252627282930313233343536 |
- #!/usr/bin/env bash
- #
- # pbrisbin 2013 - list packages for which more than N versions exist in
- # the current directory.
- #
- ###
- versions_to_keep=${1:-3}
-
- parse() {
- local package opt
-
- while read -r package; do
- case "$package" in
- *gz) opt='-qxzf' ;;
- *xz) opt='-qxJf' ;;
- esac
-
- bsdtar -O $opt "$package" .PKGINFO |\
- awk -v pkg="$package" '/^pkgname/ { printf("%s %s\n", $3, pkg) }'
- done
- }
-
- prune() {
- local name package last_seen='' num_seen=0
-
- while read -r name package; do
- [[ "${last_seen:-$name}" != "$name" ]] && num_seen=0
-
- (( ++num_seen > versions_to_keep )) && readlink -f "$package"
-
- last_seen="$name"
- done
- }
-
- find ./ -maxdepth 1 -type f -name '*.pkg.tar.[gx]z' |\
- LC_ALL='C' sort -rV | parse | prune
|