From 313bf2239f766a5a1d060133131b477478873ad7 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Sat, 19 Oct 2019 12:04:25 -0400 Subject: [PATCH] improve conflink outdated detection --- conflink | 4 +++ system-status | 67 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 53 insertions(+), 18 deletions(-) diff --git a/conflink b/conflink index a763c22..42c811a 100755 --- a/conflink +++ b/conflink @@ -149,4 +149,8 @@ case $user in ;; esac +f=/a/bin/distro-setup/system-status +if [[ -x $f ]]; then + $f _ +fi echo 0 >~/.local/conflink diff --git a/system-status b/system-status index e137d06..d6db7c3 100755 --- a/system-status +++ b/system-status @@ -13,6 +13,15 @@ status_file=/dev/shm/iank-status shopt -s nullglob shopt -s dotglob +verbose=false +if [[ $1 ]]; then + verbose=true +fi +v() { + if $verbose; then + printf "%s\n" "$*" + fi +} lo() { /usr/local/bin/log-once "$@"; } write-status() { @@ -51,26 +60,48 @@ write-status() { fi f=~/.local/conflink - if [[ -e $f ]]; then - now=$(date +%s) - fsec=$(stat -c%Y $f) - fmin=$(( (fsec - now ) / 60 + 1 )) - fminplus=$(( fmin + 60*24 )) - # Filesystem files get copied, so find any newer than the last run. - # The rest are hueristics: - # Given the last time we added a file in git, is that newer than the last conflink run. - # Given new files not added to git, were they modified more recently than the last conflink? but, - # push their modification time back by a day so we can develop them before needing to add them to git. - if (( $(date -d "$(git log --diff-filter=ACR --format=%aD -1)" +%s) > fsec )) || \ - [[ $(find {/a/bin/ds,/p/c}{/filesystem,/machine_specific/$HOSTNAME/filesystem} -mmin $fmin -type f -print -quit 2>/dev/null) ]] \ - || [[ $(find $(git ls-files -o --exclude-standard) -mmin $fminplus -type f -print -quit) ]]; then + for _ in 1; do + if [[ -e $f ]]; then + now=$(date +%s) + fsec=$(stat -c%Y $f) + fmin=$(( (fsec - now ) / 60 + 1 )) + fminplus=$(( fmin + 60*24 )) + # Filesystem files get copied, so find any newer than the last run. + # The rest are hueristics: + # Given the last time we added a file in git, is that newer than the last conflink run. + # Given new files not added to git, were they modified more recently than the last conflink? but, + # push their modification time back by a day so we can develop them before needing to add them to git. + + all_dirs=({/a/bin/ds,/p/c}{/filesystem,/machine_specific/$HOSTNAME/filesystem}) + # This part is copied from conflink + for x in /p/c/machine_specific/*.hosts /a/bin/ds/machine_specific/*.hosts; do + if grep -qxF $HOSTNAME $x; then all_dirs+=( ${x%.hosts} ); fi + done + + if (( $(date -d "$(git log --diff-filter=ACR --format=%aD -1)" +%s) > fsec )) || \ + [[ $(find ${all_dirs[@]} -mmin $fmin -type f -print -quit 2>/dev/null) ]]; then + v conflink newer git or newer filesystem files + chars+=("CONFLINK!") + break + fi + + for d in /a/bin/distro-setup /p/c; do + cd $d + untracked=$(git ls-files -o --exclude-standard) + if [[ $untracked && $(find $untracked -mmin $fminplus -type f -print -quit) ]]; then + v conflink: untracked in $d + chars+=("CONFLINK!") + break + fi + done + + fi + if [[ ! -e $f || $(<$f) != 0 ]]; then + v conflink: last run not found or failed chars+=("CONFLINK!") + break fi - fi - - if [[ ! -e $f || $(<$f) != 0 ]]; then - chars+=("CONFLINK!") - fi + done ## Clean the paniclog, but only up to 4 times per day, or else we -- 2.30.2