summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/ftpsync86
1 files 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 *_*.<things>.
+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