@@ -28,12 +28,6 @@ FORK_CHOICE_DIR = ./fork_choice
2828# To check generator matching:
2929# $(info $$GENERATOR_TARGETS is [${GENERATOR_TARGETS}])
3030
31- MARKDOWN_FILES = $(wildcard $(SPEC_DIR ) /* /* .md) \
32- $(wildcard $(SPEC_DIR ) /* /* /* .md) \
33- $(wildcard $(SPEC_DIR ) /_features/* /* .md) \
34- $(wildcard $(SPEC_DIR ) /_features/* /* /* .md) \
35- $(wildcard $(SSZ_DIR ) /* .md)
36-
3731ALL_EXECUTABLE_SPEC_NAMES = phase0 altair bellatrix capella deneb electra whisk eip6800 eip7732
3832# The parameters for commands. Use `foreach` to avoid listing specs again.
3933COVERAGE_SCOPE := $(foreach S,$(ALL_EXECUTABLE_SPEC_NAMES ) , --cov=eth2spec.$S.$(TEST_PRESET_TYPE ) )
@@ -141,13 +135,33 @@ endif
141135open_cov :
142136 (( open "$(COV_INDEX_FILE)" || xdg- open "$(COV_INDEX_FILE)") &> / dev/ null) &
143137
138+ # ##############################################################################
139+ # Table of Contents
140+ # ##############################################################################
141+
142+ # When using .ONESHELL, bail on errors.
143+ .SHELLFLAGS = -e
144+
145+ # This contains all markdown files with specifications.
146+ MARKDOWN_FILES = $(wildcard $(SPEC_DIR ) /** /* .md) \
147+ $(wildcard $(SSZ_DIR ) /* .md)
148+
149+ # Check all files and error if any ToC were modified.
144150check_toc : $(MARKDOWN_FILES:=.toc )
151+ @[ " $$ (find . -name '*.md.tmp' -print -quit)" ] && exit 1 || exit 0
145152
153+ # Generate ToC sections & save copy of original if modified.
154+ .ONESHELL :
146155% .toc :
147- cp $* $* .tmp && \
148- doctoc $* && \
149- diff -q $* $* .tmp && \
150- rm $* .tmp
156+ @cp $* $* .tmp
157+ @doctoc $* > /dev/null
158+ @if diff -q $* $* .tmp > /dev/null; then \
159+ echo " Good $* " ; \
160+ rm $* .tmp; \
161+ else \
162+ echo " \033[1;33m Bad $* \033[0m" ; \
163+ echo " \033[1;34m See $* .tmp\033[0m" ; \
164+ fi
151165
152166codespell :
153167 codespell . --skip " ./.git,./venv,$( PY_SPEC_DIR) /.mypy_cache" -I .codespell-whitelist
0 commit comments