@@ -17,7 +17,7 @@ $(1): $(1).yml
1717 echo "π Using existing $(1 ) .html and assets"; \
1818 fi
1919
20- force-build-$(1 ) : clean-$(1 ) build-$(1 ) organize-$(1 ) mark-changed
20+ force-build-$(1 ) : clean-$(1 ) build-$(1 ) organize-$(1 ) update-cache- $( 1 ) mark-changed
2121
2222clean-$(1 ) :
2323 @echo "π§Ή Cleaning old files for $(1 ) ..."
@@ -45,6 +45,36 @@ $(foreach course,$(COURSES),$(eval $(call build_course,$(course))))
4545mark-changed :
4646 @touch .cache/build_occurred
4747
48+ update-cache-% :
49+ @YAML_HASH=$$(sha256sum $* .yml 2>/dev/null | cut -d' ' -f1 || echo "missing" ) ; \
50+ case " $* " in \
51+ " digitalesysteme" ) REPO_NAME=" EingebetteteSysteme" ;; \
52+ " prozprog" ) REPO_NAME=" ProzeduraleProgrammierung" ;; \
53+ " softwareentwicklung" ) REPO_NAME=" Softwareentwicklung" ;; \
54+ " robotikprojekt" ) REPO_NAME=" Robotikprojekt" ;; \
55+ " index" ) REPO_NAME=" " ;; \
56+ * ) REPO_NAME=" " ;; \
57+ esac ; \
58+ if [ -n " $$ REPO_NAME" ]; then \
59+ API_URL=" https://api.github.com/repos/TUBAF-IfI-LiaScript/VL_$$ {REPO_NAME}/commits/master" ; \
60+ API_RESPONSE=$$(curl -sL --connect-timeout 10 "$$API_URL" 2>/dev/null ) ; \
61+ if command -v jq > /dev/null 2>&1 ; then \
62+ REMOTE_HASH=$$(echo "$$API_RESPONSE" | jq -r '.sha' 2>/dev/null || echo "unreachable" ) ; \
63+ else \
64+ REMOTE_HASH=$$(echo "$$API_RESPONSE" | sed -n 's/.*"sha":"\([^"]*\ ) " .*/\1/p' | head -1); \
65+ if [ -z " $$ REMOTE_HASH" ]; then REMOTE_HASH=" unreachable" ; fi ; \
66+ fi ; \
67+ if [ " $$ REMOTE_HASH" = " unreachable" ] || [ -z " $$ REMOTE_HASH" ]; then \
68+ REMOTE_HASH=" unreachable" ; \
69+ fi ; \
70+ else \
71+ REMOTE_HASH=" no-remote" ; \
72+ fi ; \
73+ mkdir -p .cache; \
74+ echo " $$ YAML_HASH" > " .cache/$* " ; \
75+ echo " $$ REMOTE_HASH" >> " .cache/$* " ; \
76+ echo " π Cache updated for $* "
77+
4878git-update-if-needed :
4979 @if [ -f .cache/build_occurred ]; then \
5080 echo " π Changes detected - updating git repository..." ; \
0 commit comments