41 lines
977 B
Text
41 lines
977 B
Text
|
#!/bin/bash
|
||
|
set -euo pipefail
|
||
|
|
||
|
DEBUG=${DEBUG:-false}
|
||
|
FETCH_INTERVAL=${FETCH_INTERVAL:-3600}
|
||
|
REPOS=( public secret )
|
||
|
|
||
|
# Print debug messages if enabled by ${DEBUG}
|
||
|
function debug {
|
||
|
[[ "${DEBUG}" = "false" ]] && return
|
||
|
echo "$@" >&2
|
||
|
}
|
||
|
|
||
|
# Wrap git to work with git-dir and work-tree being in other locations
|
||
|
function gwrap {
|
||
|
hub --git-dir=${HOME}/.cfg/${REPO} --work-tree=${HOME} $@
|
||
|
}
|
||
|
|
||
|
# Ensure we're connected to network before acting
|
||
|
if ! ( ping -q -c 1 8.8.8.8 >/dev/null ); then
|
||
|
debug "No network connection, not checking"
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
# Check repos for updates
|
||
|
for REPO in ${REPOS[@]}; do
|
||
|
if [ $(( $(date +%s) - $(stat -c %Y .cfg/${REPO}/FETCH_HEAD) )) -lt ${FETCH_INTERVAL} ]; then
|
||
|
debug "Last repo fetch for '${REPO}' too new, not checking"
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
gwrap fetch -q
|
||
|
|
||
|
LOCAL=$(gwrap rev-parse HEAD)
|
||
|
REMOTE=$(gwrap rev-parse FETCH_HEAD)
|
||
|
|
||
|
if ! [[ "${LOCAL}" = "${REMOTE}" ]]; then
|
||
|
echo "Config repo '${REPO}' differs from upstream"
|
||
|
fi
|
||
|
done
|