From 4f47611987e698d8913ed23110e81ae3e7ffa191 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Thu, 11 Feb 2016 06:20:39 +0100 Subject: move arch include/exclude stuff into own function --- bin/ftpsync | 86 +++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 34 deletions(-) diff --git a/bin/ftpsync b/bin/ftpsync index e3ba480..626037a 100755 --- a/bin/ftpsync +++ b/bin/ftpsync @@ -278,6 +278,55 @@ arch_exclude() { arch_include() { arch_imexclude include "$1" } + +# Learn which archs to include/exclude based on ARCH_EXCLUDE and ARCH_INCLUDE +# settings. +# +# Updates SOURCE_EXCLUDE (if not set already), and sets +# EXCLUDE (which might also have --include statementss +# followed by a --exclude *_*.. +set_exclude_include_archs() { + local exclude_sources=false + + if [[ -n "${ARCH_EXCLUDE}" ]] && [[ -n "${ARCH_INCLUDE}" ]]; then + echo >&2 "ARCH_EXCLUDE and ARCH_INCLUDE are mutually exclusive. Set only one." + exit 1 + fi + + if [[ -n "${ARCH_EXCLUDE}" ]]; then + for ARCH in ${ARCH_EXCLUDE}; do + arch_exclude ${ARCH} + if [[ ${ARCH} = source ]]; then + exclude_sources=true + fi + done + elif [[ -n "${ARCH_INCLUDE}" ]]; then + local include_arch_all=false + exclude_sources=true + for ARCH in ${ARCH_INCLUDE}; do + arch_include ${ARCH} + if [[ ${ARCH} = source ]]; then + exclude_sources=false + else + include_arch_all=true + fi + done + if [[ true = ${include_arch_all} ]]; then + arch_include all + fi + arch_exclude '*' + fi + + # we do not want sources, and SOURCE_EXCLUDE is not set in the config yet. + if [[ true = ${exclude_sources} ]] && [[ -z ${SOURCE_EXCLUDE} ]]; then + SOURCE_EXCLUDE=" --exclude=source/ --exclude=*.tar.gz --exclude=*.diff.gz --exclude=*.tar.bz2 --exclude=*.tar.xz --exclude=*.diff.bz2 --exclude=*.dsc " + # Over-ride the exclude=*.tar.gz above - there are some + # tar.gz files in the archive that are *not* source + # files... + SOURCE_EXCLUDE="$SOURCE_EXCLUDE --include=debian-cd_info.tar.gz --include=debian-faq.en.html.tar.gz --include=netboot.tar.gz --include=nfsroot.tar.gz --include=hd-media.tar.gz --include=dedication*.tar.gz" + fi +} + ######################################################################## ######################################################################## @@ -491,43 +540,9 @@ STATS_TOTAL_RSYNC_TIME2=0 EXCLUDE="${EXCLUDE} --exclude=.~tmp~/" SOURCE_EXCLUDE=${SOURCE_EXCLUDE:-""} -SOURCE_EXCLUDE_EXPLICIT= ARCH_EXCLUDE=${ARCH_EXCLUDE:-""} ARCH_INCLUDE=${ARCH_INCLUDE:-""} -# Exclude architectures defined in $ARCH_EXCLUDE -for ARCH in ${ARCH_EXCLUDE}; do - arch_exclude ${ARCH} - if [[ ${ARCH} = source ]]; then - SOURCE_EXCLUDE_EXPLICIT=1 - fi -done - -if [[ ${ARCH_INCLUDE} ]]; then - ARCH_INCLUDE_ALL= - SOURCE_EXCLUDE_EXPLICIT=1 - for ARCH in ${ARCH_INCLUDE}; do - arch_include ${ARCH} - if [[ ${ARCH} = source ]]; then - SOURCE_EXCLUDE_EXPLICIT= - else - ARCH_INCLUDE_ALL=1 - fi - done - if [[ ${ARCH_INCLUDE_ALL} ]]; then - arch_include all - fi - arch_exclude '*' -fi - -if [[ ${SOURCE_EXCLUDE_EXPLICIT} ]] && [[ -z ${SOURCE_EXCLUDE} ]]; then - SOURCE_EXCLUDE=" --exclude=source/ --exclude=*.tar.gz --exclude=*.diff.gz --exclude=*.tar.bz2 --exclude=*.tar.xz --exclude=*.diff.bz2 --exclude=*.dsc " - # Over-ride the exclude=*.tar.gz above - there are some - # tar.gz files in the archive that are *not* source - # files... - SOURCE_EXCLUDE="$SOURCE_EXCLUDE --include=debian-cd_info.tar.gz --include=debian-faq.en.html.tar.gz --include=netboot.tar.gz --include=nfsroot.tar.gz --include=hd-media.tar.gz --include=dedication*.tar.gz" -fi - RSYNC_SSL=${RSYNC_SSL:-"false"} RSYNC_SSL_PORT=${RSYNC_SSL_PORT:-"1873"} RSYNC_SSL_CAPATH=${RSYNC_SSL_CAPATH:-"/etc/ssl/certs"} @@ -558,6 +573,9 @@ DATE_STARTED=$(LC_ALL=POSIX LANG=POSIX date -u -R) ######################################################################## ######################################################################## +# Exclude architectures defined in $ARCH_EXCLUDE +set_exclude_include_archs + # Some sane defaults cd "${BASEDIR}" umask 022 -- cgit v1.2.3