From 79c14166efc1e53c8b36dbc92670de3afc67bb64 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Fri, 12 Jun 2026 16:46:47 +0000 Subject: [PATCH] =?utf8?q?refactor:=20$BRANCHES=20enth=C3=A4lt=20direkt=20?= =?utf8?q?Branch-Namen=20statt=20Variablennamen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Die Indirektionsebene (Variablenname → Wert über declare -n) wird entfernt. branches.sh definiert nur noch $BRANCHES mit direkten Branch-Namen; grundlagen/docker ist jetzt darin enthalten. lib.sh und copy.sh brauchen keine Namensauflösung mehr. Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 4 +- branches.sh | 255 ++++++++++++++++++---------------------------------- copy.sh | 12 ++- lib.sh | 9 +- 4 files changed, 94 insertions(+), 186 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 368852a9..bd007d5b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -216,7 +216,7 @@ Alle Skripte binden `lib.sh` ein, das seinerseits `branches.sh` lädt und gemein | Skript | Zweck | |--------|-------| -| `branches.sh` | Definiert alle Branch-Namen als Variablen und die Iterationsliste `$BRANCHES` | +| `branches.sh` | Definiert die Iterationsliste `$BRANCHES` mit allen Branch-Namen als direkte Zeichenketten | | `lib.sh` | Shared Library mit `$BRANCH_NAMES`-Array und den Funktionen `find_common_tag_suffixes()` und `reset_branches_to_remote()` | | `push.sh` | Force-pusht alle Branches und gemeinsame Tags zu origin; legt bei Bedarf TIMESTAMP-Backup-Tags an | | `reset.sh` | Setzt alle Branches zurück — auf `origin/` oder auf einen Tag-Stand | @@ -471,4 +471,4 @@ done - `push.sh` force-pusht — das ist für diesen Schulungsworkflow absichtlich und erwartet. - `--vorlage`-Branches werden von `copy.sh` in `vorlagen/` kopiert; das neue `build.sh` in `technik-check` baut nur Musterlösungen aus `spickzettel/` und überspringt diese damit automatisch. -- Der `grundlagen/docker`-Branch ist nicht in `$BRANCHES`, ist aber in `$BRANCH_NAMES` (aus `lib.sh`) enthalten und wird so automatisch von `push.sh`, `diff.sh`, `reset.sh` und `copy.sh` mitbehandelt. +- Der `grundlagen/docker`-Branch ist in `$BRANCHES` enthalten und wird von allen Skripten automatisch mitbehandelt. diff --git a/branches.sh b/branches.sh index f8a6c712..86d32857 100755 --- a/branches.sh +++ b/branches.sh @@ -1,175 +1,90 @@ #!/bin/bash set -e -grundlagen__docker=grundlagen/docker -producer__batch_size__vorlage=producer/batch-size--vorlage -grundlagen__simple_producer=grundlagen/simple-producer -grundlagen__simple_producer__vorlage=grundlagen/simple-producer--vorlage -grundlagen__simple_producer__livecoding=grundlagen/simple-producer--livecoding -grundlagen__simple_producer__livecoding__schritte=grundlagen/simple-producer--livecoding--schritte -grundlagen__simple_producer__image__vorlage=grundlagen/simple-producer--image--vorlage -grundlagen__simple_producer__fire_forget__vorlage=grundlagen/simple-producer--fire+forget--vorlage -grundlagen__simple_producer__completablefuture=grundlagen/simple-producer--completablefuture -producer__simple_producer__auditheaders=producer/simple-producer--auditheaders -producer__simple_producer__delivery_timeout=producer/simple-producer--delivery-timeout -producer__spring_producer=producer/spring-producer -producer__spring_producer__vorlage=producer/spring-producer--vorlage -producer__spring_producer__fixedsharding=producer/spring-producer--fixedsharding -producer__spring_producer__fixedsharding__vorlage=producer/spring-producer--fixedsharding--vorlage -producer__spring_producer__delivery_timeout=producer/spring-producer--delivery-timeout -producer__spring_producer__delivery_timeout__vorlage=producer/spring-producer--delivery-timeout--vorlage -producer__spring_producer__backpressure=producer/spring-producer--backpressure -producer__spring_producer__backpressure__vorlage=producer/spring-producer--backpressure--vorlage -producer__spring_producer__auditheaders=producer/spring-producer--auditheaders -producer__spring_producer__auditheaders__vorlage=producer/spring-producer--auditheaders--vorlage -producer__spring_producer__generics=producer/spring-producer--generics -producer__rest_producer=producer/rest-producer -springkafka__spring_producer__livecoding=springkafka/spring-producer--livecoding -springkafka__spring_producer__livecoding__schritte=springkafka/spring-producer--livecoding--schritte -springkafka__spring_producer=springkafka/spring-producer -springkafka__spring_producer__vorlage=springkafka/spring-producer--vorlage -springkafka__spring_producer__json=springkafka/spring-producer--json -springkafka__spring_producer__json__vorlage=springkafka/spring-producer--json--vorlage -springkafka__spring_producer__json__messages=springkafka/spring-producer--json--messages -springkafka__spring_producer__json__messages__vorlage=springkafka/spring-producer--json--messages--vorlage -springkafka__spring_producer__messageconverter=springkafka/spring-producer--messageconverter -springkafka__spring_producer__kafkatemplate=springkafka/spring-producer--kafkatemplate -springkafka__spring_producer__kafkatemplate__vorlage=springkafka/spring-producer--kafkatemplate--vorlage -springkafka__technik_check=springkafka/technik-check -springkafka__supersimple_producer=springkafka/supersimple-producer -springkafka__supersimple_producer__vorlage=springkafka/supersimple-producer--vorlage -grundlagen__simple_consumer=grundlagen/simple-consumer -grundlagen__simple_consumer__vorlage=grundlagen/simple-consumer--vorlage -grundlagen__simple_consumer__livecoding=grundlagen/simple-consumer--livecoding -grundlagen__simple_consumer__livecoding__schritte=grundlagen/simple-consumer--livecoding--schritte -grundlagen__simple_consumer__image__vorlage=grundlagen/simple-consumer--image--vorlage -consumer__simple_consumer__megagroup__vorlage=consumer/simple-consumer--megagroup--vorlage -consumer__simple_consumer__max_poll_interval_ms=consumer/simple-consumer--max-poll-interval-ms -consumer__simple_consumer__retention_ms__vorlage=consumer/simple-consumer--retention-ms--vorlage -consumer__spring_consumer__livecoding=consumer/spring-consumer--livecoding -consumer__spring_consumer__livecoding__schritte=consumer/spring-consumer--livecoding--schritte -consumer__spring_consumer=consumer/spring-consumer -consumer__spring_consumer__vorlage=consumer/spring-consumer--vorlage -consumer__nodlt=consumer/nodlt -consumer__spring_consumer__logic_error=consumer/spring-consumer--logic-error -consumer__spring_consumer__logic_error__vorlage=consumer/spring-consumer--logic-error--vorlage -consumer__spring_consumer__long=consumer/spring-consumer--long -consumer__spring_consumer__deserialization_error=consumer/spring-consumer--deserialization-error -consumer__spring_consumer__deserialization_error__vorlage=consumer/spring-consumer--deserialization-error--vorlage -consumer__spring_consumer__seek=consumer/spring-consumer--seek -consumer__spring_consumer__seek__vorlage=consumer/spring-consumer--seek--vorlage -consumer__spring_consumer__assign=consumer/spring-consumer--assign -consumer__spring_consumer__assign__vorlage=consumer/spring-consumer--assign--vorlage -consumer__spring_consumer__rebalance_listener=consumer/spring-consumer--rebalance-listener -consumer__spring_consumer__rebalance_listener__vorlage=consumer/spring-consumer--rebalance-listener--vorlage -consumer__spring_consumer__log_compaction=consumer/spring-consumer--log-compaction -consumer__spring_consumer__generics=consumer/spring-consumer--generics -consumer__spring_consumer__record_handler=consumer/spring-consumer--record-handler -consumer__spring_consumer__health_indicator=consumer/spring-consumer--health-indicator -consumer__spring_consumer__error_handling=consumer/spring-consumer--error-handling -springkafka__spring_consumer__vorlage=springkafka/spring-consumer--vorlage -springkafka__spring_consumer__json=springkafka/spring-consumer--json -springkafka__spring_consumer__json__vorlage=springkafka/spring-consumer--json--vorlage -springkafka__sumup_messages__vorlage=springkafka/sumup-messages--vorlage -springkafka__spring_consumer__json__messages=springkafka/spring-consumer--json--messages -springkafka__spring_consumer__json__messages__vorlage=springkafka/spring-consumer--json--messages--vorlage -springkafka__spring_consumer__kafkahandler=springkafka/spring-consumer--kafkahandler -springkafka__spring_consumer__messageconverter=springkafka/spring-consumer--messageconverter -springkafka__spring_consumer__messageconverter__dlt=springkafka/spring-consumer--messageconverter--dlt -springkafka__supersimple_consumer=springkafka/supersimple-consumer -springkafka__supersimple_consumer__vorlage=springkafka/supersimple-consumer--vorlage -springkafka__spring_consumer__kafkalistener=springkafka/spring-consumer--kafkalistener -springkafka__spring_consumer__kafkalistener__concurrency=springkafka/spring-consumer--kafkalistener--concurrency -springkafka__spring_consumer__kafkalistener__logic_error=springkafka/spring-consumer--kafkalistener--logic-error -springkafka__spring_consumer__kafkalistener__long=springkafka/spring-consumer--kafkalistener--long -springkafka__spring_consumer__kafkalistener__long__deserialization_error=springkafka/spring-consumer--kafkalistener--long--deserialization-error -springkafka__spring_consumer__kafkalistener__long__dlt=springkafka/spring-consumer--kafkalistener--long--dlt -springkafka__spring_producer__long=springkafka/spring-producer--long -springkafka__spring_producer__long__vorlage=springkafka/spring-producer--long--vorlage - BRANCHES="\ - producer__batch_size__vorlage \ - grundlagen__simple_producer \ - grundlagen__simple_producer__vorlage \ - grundlagen__simple_producer__livecoding \ - grundlagen__simple_producer__livecoding__schritte \ - grundlagen__simple_producer__image__vorlage \ - grundlagen__simple_producer__fire_forget__vorlage \ - grundlagen__simple_producer__completablefuture \ - producer__simple_producer__auditheaders \ - producer__simple_producer__delivery_timeout \ - producer__spring_producer \ - producer__spring_producer__vorlage \ - producer__spring_producer__fixedsharding \ - producer__spring_producer__fixedsharding__vorlage \ - producer__spring_producer__delivery_timeout \ - producer__spring_producer__delivery_timeout__vorlage \ - producer__spring_producer__backpressure \ - producer__spring_producer__backpressure__vorlage \ - producer__spring_producer__auditheaders \ - producer__spring_producer__auditheaders__vorlage \ - producer__spring_producer__generics \ - producer__rest_producer \ - springkafka__spring_producer__livecoding \ - springkafka__spring_producer__livecoding__schritte \ - springkafka__spring_producer \ - springkafka__spring_producer__vorlage \ - springkafka__spring_producer__json \ - springkafka__spring_producer__json__vorlage \ - springkafka__spring_producer__json__messages \ - springkafka__spring_producer__json__messages__vorlage \ - springkafka__spring_producer__messageconverter \ - springkafka__spring_producer__kafkatemplate \ - springkafka__spring_producer__kafkatemplate__vorlage \ - springkafka__technik_check \ - springkafka__supersimple_producer \ - springkafka__supersimple_producer__vorlage \ - grundlagen__simple_consumer \ - grundlagen__simple_consumer__vorlage \ - grundlagen__simple_consumer__livecoding \ - grundlagen__simple_consumer__livecoding__schritte \ - grundlagen__simple_consumer__image__vorlage \ - consumer__simple_consumer__megagroup__vorlage \ - consumer__simple_consumer__max_poll_interval_ms \ - consumer__simple_consumer__retention_ms__vorlage \ - consumer__spring_consumer__livecoding \ - consumer__spring_consumer__livecoding__schritte \ - consumer__spring_consumer \ - consumer__spring_consumer__vorlage \ - consumer__nodlt \ - consumer__spring_consumer__logic_error \ - consumer__spring_consumer__logic_error__vorlage \ - consumer__spring_consumer__long \ - consumer__spring_consumer__deserialization_error \ - consumer__spring_consumer__deserialization_error__vorlage \ - consumer__spring_consumer__seek \ - consumer__spring_consumer__seek__vorlage \ - consumer__spring_consumer__assign \ - consumer__spring_consumer__assign__vorlage \ - consumer__spring_consumer__rebalance_listener \ - consumer__spring_consumer__rebalance_listener__vorlage \ - consumer__spring_consumer__log_compaction \ - consumer__spring_consumer__generics \ - consumer__spring_consumer__record_handler \ - consumer__spring_consumer__health_indicator \ - consumer__spring_consumer__error_handling \ - springkafka__spring_consumer__vorlage \ - springkafka__spring_consumer__json \ - springkafka__spring_consumer__json__vorlage \ - springkafka__sumup_messages__vorlage \ - springkafka__spring_consumer__json__messages \ - springkafka__spring_consumer__json__messages__vorlage \ - springkafka__spring_consumer__kafkahandler \ - springkafka__spring_consumer__messageconverter \ - springkafka__spring_consumer__messageconverter__dlt \ - springkafka__supersimple_consumer \ - springkafka__supersimple_consumer__vorlage \ - springkafka__spring_consumer__kafkalistener \ - springkafka__spring_consumer__kafkalistener__concurrency \ - springkafka__spring_consumer__kafkalistener__logic_error \ - springkafka__spring_consumer__kafkalistener__long \ - springkafka__spring_consumer__kafkalistener__long__deserialization_error \ - springkafka__spring_consumer__kafkalistener__long__dlt \ - springkafka__spring_producer__long \ - springkafka__spring_producer__long__vorlage \ + grundlagen/docker \ + producer/batch-size--vorlage \ + grundlagen/simple-producer \ + grundlagen/simple-producer--vorlage \ + grundlagen/simple-producer--livecoding \ + grundlagen/simple-producer--livecoding--schritte \ + grundlagen/simple-producer--image--vorlage \ + grundlagen/simple-producer--fire+forget--vorlage \ + grundlagen/simple-producer--completablefuture \ + producer/simple-producer--auditheaders \ + producer/simple-producer--delivery-timeout \ + producer/spring-producer \ + producer/spring-producer--vorlage \ + producer/spring-producer--fixedsharding \ + producer/spring-producer--fixedsharding--vorlage \ + producer/spring-producer--delivery-timeout \ + producer/spring-producer--delivery-timeout--vorlage \ + producer/spring-producer--backpressure \ + producer/spring-producer--backpressure--vorlage \ + producer/spring-producer--auditheaders \ + producer/spring-producer--auditheaders--vorlage \ + producer/spring-producer--generics \ + producer/rest-producer \ + springkafka/spring-producer--livecoding \ + springkafka/spring-producer--livecoding--schritte \ + springkafka/spring-producer \ + springkafka/spring-producer--vorlage \ + springkafka/spring-producer--json \ + springkafka/spring-producer--json--vorlage \ + springkafka/spring-producer--json--messages \ + springkafka/spring-producer--json--messages--vorlage \ + springkafka/spring-producer--messageconverter \ + springkafka/spring-producer--kafkatemplate \ + springkafka/spring-producer--kafkatemplate--vorlage \ + springkafka/technik-check \ + springkafka/supersimple-producer \ + springkafka/supersimple-producer--vorlage \ + grundlagen/simple-consumer \ + grundlagen/simple-consumer--vorlage \ + grundlagen/simple-consumer--livecoding \ + grundlagen/simple-consumer--livecoding--schritte \ + grundlagen/simple-consumer--image--vorlage \ + consumer/simple-consumer--megagroup--vorlage \ + consumer/simple-consumer--max-poll-interval-ms \ + consumer/simple-consumer--retention-ms--vorlage \ + consumer/spring-consumer--livecoding \ + consumer/spring-consumer--livecoding--schritte \ + consumer/spring-consumer \ + consumer/spring-consumer--vorlage \ + consumer/nodlt \ + consumer/spring-consumer--logic-error \ + consumer/spring-consumer--logic-error--vorlage \ + consumer/spring-consumer--long \ + consumer/spring-consumer--deserialization-error \ + consumer/spring-consumer--deserialization-error--vorlage \ + consumer/spring-consumer--seek \ + consumer/spring-consumer--seek--vorlage \ + consumer/spring-consumer--assign \ + consumer/spring-consumer--assign--vorlage \ + consumer/spring-consumer--rebalance-listener \ + consumer/spring-consumer--rebalance-listener--vorlage \ + consumer/spring-consumer--log-compaction \ + consumer/spring-consumer--generics \ + consumer/spring-consumer--record-handler \ + consumer/spring-consumer--health-indicator \ + consumer/spring-consumer--error-handling \ + springkafka/spring-consumer--vorlage \ + springkafka/spring-consumer--json \ + springkafka/spring-consumer--json--vorlage \ + springkafka/sumup-messages--vorlage \ + springkafka/spring-consumer--json--messages \ + springkafka/spring-consumer--json--messages--vorlage \ + springkafka/spring-consumer--kafkahandler \ + springkafka/spring-consumer--messageconverter \ + springkafka/spring-consumer--messageconverter--dlt \ + springkafka/supersimple-consumer \ + springkafka/supersimple-consumer--vorlage \ + springkafka/spring-consumer--kafkalistener \ + springkafka/spring-consumer--kafkalistener--concurrency \ + springkafka/spring-consumer--kafkalistener--logic-error \ + springkafka/spring-consumer--kafkalistener--long \ + springkafka/spring-consumer--kafkalistener--long--deserialization-error \ + springkafka/spring-consumer--kafkalistener--long--dlt \ + springkafka/spring-producer--long \ + springkafka/spring-producer--long--vorlage \ " diff --git a/copy.sh b/copy.sh index 92b856cd..59311f5d 100755 --- a/copy.sh +++ b/copy.sh @@ -108,6 +108,7 @@ load_schulung_config() { is_selected() { local branch="$1" b + [[ "$branch" == "grundlagen/docker" ]] && return 0 [[ "$branch" == "springkafka/technik-check" ]] && return 0 [[ "$branch" == *--livecoding ]] && return 0 [ ${#SELECTED_BRANCHES[@]} -eq 0 ] && return 0 @@ -143,13 +144,7 @@ fi EXPECTED=$(mktemp) trap 'rm -f "$EXPECTED"' EXIT -sync_header "grundlagen/docker" "$VORLAGEN/grundlagen/docker" -checkout_branch "grundlagen/docker" -echo "$VORLAGEN/grundlagen/docker" >> "$EXPECTED" -sync_to "$VORLAGEN/grundlagen/docker/" - -for i in $BRANCHES; do - declare -n branch=${i} +for branch in $BRANCHES; do case "$branch" in *--livecoding--schritte) echo -e "\nÜberspringe $branch" @@ -160,6 +155,9 @@ for i in $BRANCHES; do continue fi case "$branch" in + grundlagen/docker) + dest="$VORLAGEN/grundlagen/docker" + ;; springkafka/technik-check) dest="$TECHNIKCHECK" ;; diff --git a/lib.sh b/lib.sh index 31bd8472..34a3d5ec 100755 --- a/lib.sh +++ b/lib.sh @@ -4,13 +4,8 @@ source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/branches.sh" -# Array aller Branch-Namen als Strings (inkl. grundlagen/docker) -BRANCH_NAMES=() -for _i in grundlagen__docker $BRANCHES; do - declare -n _b=$_i - BRANCH_NAMES+=("$_b") - unset -n _b -done +# Array aller Branch-Namen als Strings +BRANCH_NAMES=($BRANCHES) # Gibt gemeinsame Tag-Suffixe aller Branches auf stdout aus (einen pro Zeile). # Schlägt mit Fehler fehl, wenn ein Branch keine Tags hat. -- 2.39.5