From 385b47e56e0f1edf9fc36f75febf3f0622a9a251 Mon Sep 17 00:00:00 2001 From: Evangelos Foutras Date: Thu, 7 May 2020 23:50:37 +0300 Subject: 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. --- sogrep.in | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sogrep.in b/sogrep.in index 19fe651..676d9df 100755 --- a/sogrep.in +++ b/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 -- cgit v1.2.3-70-g09d2