RSYNC_OPTS=(
rsync -av
+ --delete
--exclude=.git
--exclude=target
--exclude=.idea
"${RSYNC_OPTS[@]}" . "$1"
}
+EXPECTED=$(mktemp)
+trap 'rm -f "$EXPECTED"' EXIT
+
if [ "$TAG_SUFFIX" != "" ]; then
git checkout "grundlagen/docker--${TAG_SUFFIX}"
else
git checkout grundlagen/docker
fi
+echo "$VORLAGEN/grundlagen/docker" >> "$EXPECTED"
sync_to "$VORLAGEN/grundlagen/docker/"
for i in $BRANCHES; do
case "$branch" in
*--livecoding--schritte)
echo "Ignoriere Einzelschritte eines Live-Codings: $branch"
+ continue
;;
*--vorlage)
vorlage="${branch%--vorlage}"
# Sonderfall: technik-check gehört thematisch zu den Grundlagen
if [ "$vorlage" = "springkafka/technik-check" ]; then
- sync_to "$VORLAGEN/grundlagen/technik-check/"
+ dest="$VORLAGEN/grundlagen/technik-check"
else
- sync_to "$VORLAGEN/$vorlage/"
+ dest="$VORLAGEN/$vorlage"
fi
;;
*--livecoding)
- livecoding="${branch%--livecoding}"
- sync_to "$LIVECODING/$livecoding/"
+ dest="$LIVECODING/${branch%--livecoding}"
;;
*)
- sync_to "$MUSTERLOESUNGEN/$branch/"
+ dest="$MUSTERLOESUNGEN/$branch"
;;
esac
+ echo "$dest" >> "$EXPECTED"
+ sync_to "$dest/"
+done
+
+echo -e "\nBereinige veraltete Verzeichnisse..."
+for base in "$VORLAGEN" "$LIVECODING" "$MUSTERLOESUNGEN"; do
+ [ -d "$base" ] || continue
+ while IFS= read -r actual; do
+ if ! grep -qxF "$actual" "$EXPECTED"; then
+ echo " Entferne: $actual"
+ rm -rf "$actual"
+ fi
+ done < <(find "$base" -mindepth 2 -maxdepth 2 -type d | sort)
done
if [ "$NEXUS_URL" != "" ]; then