X-Git-Url: https://iankelling.org/git/?p=distro-functions;a=blobdiff_plain;f=src%2Fpackage-manager-abstractions;fp=src%2Fpackage-manager-abstractions;h=dece84830169562a1217de1a7b71f019c7b866ba;hp=9311038c4f0b616d6b7ad1837d25a413edbfb3ff;hb=1550d2b551dd02700d4e3e1317d34f2fa25a2192;hpb=7fa28f7a5bc32b0e2de513fa7d9ae7c245c09c05 diff --git a/src/package-manager-abstractions b/src/package-manager-abstractions index 9311038..dece848 100644 --- a/src/package-manager-abstractions +++ b/src/package-manager-abstractions @@ -88,11 +88,25 @@ elif command -v apt-get &>/dev/null; then esac } pupdate() { - local s f; [[ $EUID != 0 ]] && s=sudo + local now t s f cachetime limittime; [[ $EUID != 0 ]] && s=sudo # update package list if its more than an 2 hours old f=/var/cache/apt/pkgcache.bin - if [[ ! -r $f ]] \ - || (( $(( $(date +%s) - $(stat -c %Y $f ) )) > 60*60*2 )); then + if [[ -r $f ]]; then + cachetime=$(stat -c %Y $f ) + else + cachetime=0 + fi + now=$(date +%s) + limittime=$(( now - 60*60*2 )) + for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list; do + if [[ -r $f ]]; then + t=$(stat -c %Y $f ) + if (( t > limittime )); then + limittime=$t + fi + fi + done + if (( cachtime > limittime )); then $s apt-get update fi }