From e3dc5f7cb77942fdac1fa02ee41669341bd7b67b Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sat, 30 Aug 2014 11:52:52 -0400 Subject: abstract away cache semantics --- remote.inc.sh | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/remote.inc.sh b/remote.inc.sh index 81f2935..ba72565 100644 --- a/remote.inc.sh +++ b/remote.inc.sh @@ -1,20 +1,5 @@ declare -A refcache=() -__remote_refcache_get() { - local remote=$1 ttl=3600 now= cachetime= cachefile=$ASPCACHE/remote-$remote - - # miss - cachetime=$(stat -c %Y "$cachefile" 2>/dev/null) || return 1 - - printf -v now '%(%s)T' -1 - - # miss - (( now > (cachetime + ttl) )) && return 1 - - # hit - mapfile -t "$2" <"$cachefile" -} - __remote_refcache_update() { local remote=$1 cachefile=$ASPCACHE/remote-$remote @@ -25,13 +10,23 @@ __remote_refcache_update() { mv "$cachefile"{~,} } -remote_get_all_refs() { - local remote=$1 +__remote_refcache_get() { + local remote=$1 ttl=3600 now= cachetime= cachefile=$ASPCACHE/remote-$remote + + printf -v now '%(%s)T' -1 - if ! __remote_refcache_get "$remote" "$2"; then + if ! cachetime=$(stat -c %Y "$cachefile" 2>/dev/null) || + (( now > (cachetime + ttl) )); then __remote_refcache_update "$remote" - __remote_refcache_get "$remote" "$2" fi + + mapfile -t "$2" <"$cachefile" +} + +remote_get_all_refs() { + local remote=$1 + + __remote_refcache_get "$remote" "$2" } remote_has_package() { -- cgit v1.2.3-54-g00ecf