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
|
||||
}
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue