sogrep: refresh if any database is over a day old
Outdated sogrep cache has already bit us once in the past. Finding one or more databases older than a day is a good indication that a refresh is in order, so do that automatically.
This commit is contained in:
parent
9d39abbefe
commit
385b47e56e
21
sogrep.in
21
sogrep.in
|
@ -54,6 +54,24 @@ recache() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_outdated_cache() {
|
||||||
|
local repo arch
|
||||||
|
|
||||||
|
# links databases are generated at about the same time every day; we should
|
||||||
|
# attempt to check for new database files if any of them are over a day old
|
||||||
|
|
||||||
|
for repo in "${_repos[@]}"; do
|
||||||
|
for arch in "${arches[@]}"; do
|
||||||
|
local dbpath=${SOCACHE_DIR}/${arch}/${repo}.links.tar.gz
|
||||||
|
if [[ ! -f ${dbpath} ]] || [[ $(find "${dbpath}" -mtime +0) ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
search() {
|
search() {
|
||||||
local repo=$1 arch lib=$2 srepos=("${_repos[@]}")
|
local repo=$1 arch lib=$2 srepos=("${_repos[@]}")
|
||||||
|
|
||||||
|
@ -152,7 +170,8 @@ if ! (( ( REFRESH && $# == 0 ) || $# == 2 )); then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if (( REFRESH )) || [[ ! -d ${SOCACHE_DIR} ]]; then
|
# trigger a refresh if requested explicitly or the cached dbs might be outdated
|
||||||
|
if (( REFRESH )) || [[ ! -d ${SOCACHE_DIR} ]] || is_outdated_cache; then
|
||||||
recache
|
recache
|
||||||
(( $# == 2 )) || exit 0
|
(( $# == 2 )) || exit 0
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue