X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Farchival%2Fgeneral_updater.sh;h=baca195c08edf92a36bf3c63db74d6d1450b340c;hb=7ad1d1e472fb533049e6e1c8c7963e8180d8815b;hp=d03307fc018dbce033e4c51d057f4437cd44e39e;hpb=3c5347efbb4155d4abcea52b99ac15177a4cdc3a;p=feisty_meow.git diff --git a/scripts/archival/general_updater.sh b/scripts/archival/general_updater.sh index d03307fc..baca195c 100644 --- a/scripts/archival/general_updater.sh +++ b/scripts/archival/general_updater.sh @@ -11,6 +11,7 @@ source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh" function update_source_folders() { folder="$1"; shift + sep if [ ! -d "$folder" ]; then echo "The folder '$folder' does not exist, so skipping repository update there." return; @@ -27,6 +28,7 @@ function update_source_folders() return 1 fi popd + sep } # this attempts to copy all the contents in a folder called "from" into a folder @@ -40,12 +42,12 @@ function synch_directory_to_target() sep if [ ! -d "$from" ]; then - echo "skipping synch on missing source directory $from; this is not normal!" - return 1 + echo "skipping synch on missing source directory: $from" + return 0 fi if [ ! -d "$to" ]; then - echo "skipping synch into non-existent directory $to" - return + echo "skipping synch into non-existent target directory $to" + return 0 fi echo "synching from $from into $to" @@ -67,12 +69,12 @@ function update_archive_drive() sep - echo Target drive currently has... - ls "$target_folder" - if [ $? -ne 0 ]; then - echo "The target location '$target_folder' is not mounted currently, so cannot be updated." + if [ ! -d "$target_folder" -a ! -f "$target_folder" ]; then + echo "Target '$target_folder' is not available currently; not updating." return 1 fi + echo Target drive currently has... + dir "$target_folder" # synch all our targets. for currdir in $MAJOR_ARCHIVE_SOURCES; do @@ -92,6 +94,77 @@ function update_archive_drive() echo successfully updated all expected portions of the target drive at: echo " $target_folder" + echo + popd } +# compares one local well-known folder against the similar folder on a +# remote destination. the first folder is the archive name, with no paths. +# the second paramter is the local path component of the archive, such as +# "/z" if the archives are found in the /z hierarchy. the third parameter +# is the remote location of the archive, which should just be a host name. +# the fourth parameter is the destination path component to match the local +# path component (since these can differ). +function do_a_folder_compare() +{ + local archname="$1"; shift + local pathing="$1"; shift + local dest="$1"; shift + local destpath="$1"; shift + if [ -z "$archname" -o -z "$dest" ]; then + echo "do_a_folder_compare needs an archive name and a destination host." + return 1 + fi + + if [ -d "/z/$archname" ]; then + sep 14 + echo "Comparing ${pathing}/${archname} with remote $dest:${destpath}/${archname}" + compare_dirs ${pathing}/${archname} ${dest}:${destpath}/${archname} + sep 14 + fi +} + +# runs through all the local archives on this host to make sure nothing is +# different when compared with the mainline versions on the specified host. +# the first parameter is the remote version to compare against. if there is +# a second parameter, it is used as the path on the local machine where the +# comparison should be based (e.g. an archive drive rather than /z/). +function uber_archive_comparator() +{ + local remote_arch="$1"; shift + if [ -z "$remote_arch" ]; then + echo uber_archive_comparator needs the remote archive host to compare with. + return 1 + fi + local local_place="$1"; shift + if [ -z "$local_place" ]; then + local_place="/z" + fi + + sep 14 + echo "comparing against host '$remote_arch'" + sep 14 + +#hmmm: shouldn't this be a list in a variable someplace? + for archicle in \ + basement \ + imaginations \ + musix \ + toaster \ + walrus \ + ; do + do_a_folder_compare ${archicle} ${local_place} ${remote_arch} "/z" + done +} + + +#hmmm: abstractable piece? the runtime plug at the end of a library script? +# this block should execute when the script is actually run, rather +# than when it's just being sourced. +if [[ $0 =~ .*general_updater\.sh.* ]]; then + source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh" + exit_on_error "sourcing the feisty meow environment" + update_archive_drive "${@}" + exit_on_error "updating archive drive at: $*" +fi