mirror of https://github.com/archzfs/archzfs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
56 lines
1.6 KiB
#!/bin/bash
|
|
#
|
|
# This script is used to make sure the archzfs repositories are up to date and
|
|
# in sync with my local repositories.
|
|
#
|
|
# This is necessary because I often forgot to push the changes to the archzfs
|
|
# host after updating my local repositories.
|
|
#
|
|
source "lib.sh"
|
|
source "conf.sh"
|
|
|
|
compute_local_repo_hash() {
|
|
# $1: The repository to compute
|
|
# Sets LOCAL_REPO_HASH
|
|
msg2 "Computing local $1 repository hashes..."
|
|
LFILES=$(cd $REPO_BASEPATH; sha256sum $1/{x86_64,i686}/*)
|
|
if [[ $DEBUG == "1" ]]; then
|
|
msg2 "Repository hash list:"
|
|
echo "$LFILES"
|
|
fi
|
|
LOCAL_REPO_HASH=$(echo "$LFILES" | sha256sum | cut -f 1 -d' ')
|
|
msg2 "Computed hash: $LOCAL_REPO_HASH"
|
|
}
|
|
|
|
compute_remote_repo_hash() {
|
|
# $1: The repository to compute
|
|
# Sets REMOTE_REPO_HASH
|
|
msg2 "Computing remote $1 repository hashes..."
|
|
RFILES=$(ssh $REMOTE_LOGIN "cd webapps/default; sha256sum $1/{x86_64,i686}/*")
|
|
if [[ $DEBUG == "1" ]]; then
|
|
msg2 "Repository hash list:"
|
|
echo "$RFILES"
|
|
fi
|
|
REMOTE_REPO_HASH=$(echo "$RFILES" | sha256sum | cut -f 1 -d' ')
|
|
msg2 "Computed hash: $REMOTE_REPO_HASH"
|
|
}
|
|
|
|
compare_repo() {
|
|
# $1: The repo name to compare
|
|
compute_local_repo_hash $1
|
|
compute_remote_repo_hash $1
|
|
if [[ $REMOTE_REPO_HASH != $LOCAL_REPO_HASH ]]; then
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
for REPO in 'demz-repo-archiso' 'demz-repo-core'; do
|
|
msg "Checking ${REPO}..."
|
|
compare_repo $REPO
|
|
if [[ $? != 0 ]]; then
|
|
error "The database is out of sync, sending notification..."
|
|
send_email "$REPO is out of sync!" "$REPO is not in sync!"
|
|
fi
|
|
msg2 "$REPO is in sync"
|
|
done
|
|
|