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:
Evangelos Foutras 2020-05-07 23:50:37 +03:00 committed by Levente Polyak
parent 9d39abbefe
commit 385b47e56e
No known key found for this signature in database
GPG Key ID: FC1B547C8D8172C8
1 changed files with 20 additions and 1 deletions

View File

@ -54,6 +54,24 @@ recache() {
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() {
local repo=$1 arch lib=$2 srepos=("${_repos[@]}")
@ -152,7 +170,8 @@ if ! (( ( REFRESH && $# == 0 ) || $# == 2 )); then
exit 1
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
(( $# == 2 )) || exit 0
fi