From fcc720ae85e710eb4aca4ff8bf48b597aa4ea5fe Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 4 Aug 2024 00:24:41 -0300 Subject: Fix: status: add function status_run_if_file_older_than --- status | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/status b/status index b357b4e..51f9874 100755 --- a/status +++ b/status @@ -72,6 +72,33 @@ function status_file_changed_delta { echo $(( timestamp - file_timestamp )) } +# Run command if a file is older than a given number of seconds +function status_run_if_file_older_than { + local file="$1" + local interval="$2" + local run="0" + + shift 2 + + # Run command if there's still no file to test + if [ ! -e "$file" ]; then + run="1" + else + local age="`status_file_changed_delta $file`" + local interval="3600" + + # Run command only when file is older or equal the interval + if (( $age >= $interval )); then + run="1" + fi + fi + + # Run if criteria matches + if [ "$run" == "1" ]; then + $* + fi +} + # Run status function status_run { if [ ! -z "$PROJECT" ]; then @@ -92,24 +119,8 @@ function status_run { # Update your mrconfig and check all registered repositories if which mr &> /dev/null; then local mrconfig="$HOME/.custom/mrconfig-automatic" - local mrconfig_run="0" - - # Run mrconfig-updater if there's still no config - if [ ! -e "$mrconfig" ]; then - mrconfig_run="1" - else - local mrconfig_age="`status_file_changed_delta $mrconfig`" - local mrconfig_interval="3600" - - # Run mrconfig-updater only every hour or so - if (( $mrconfig_age >= $mrconfig_interval )); then - mrconfig_run="1" - fi - fi - if [ "$mrconfig_run" == "1" ]; then - mrconfig-updater - fi + status_run_if_file_older_than $mrconfig 3600 mrconfig-updater # Pipe through cat so we don't have to deal with mr's dynamic output weirdness #mr -m status | cat -- cgit v1.2.3