Factor out script to build commands.hdr

As part of factoring out the documentation building parts of the fish
build, add a new file build_commands_hdr.sh that builds the commands.hdr
file. Invoke it from both the Makefile and CMake build.
This commit is contained in:
ridiculousfish 2017-09-17 15:01:15 -07:00
parent f044084f3a
commit 088450cbf5
3 changed files with 67 additions and 16 deletions

View file

@ -4,7 +4,21 @@ FILE(GLOB COMPLETIONS_DIR_FILES share/completions/*.fish)
# Files in ./share/functions/ # Files in ./share/functions/
FILE(GLOB FUNCTIONS_DIR_FILES share/functions/*.fish) FILE(GLOB FUNCTIONS_DIR_FILES share/functions/*.fish)
# Build lexicon_filter # Files in doc_src
FILE(GLOB DOC_SRC_FILES doc_src/*)
# .txt files in doc_src
FILE(GLOB HELP_SRC doc_src/*.txt)
# These files are the source files, they contain a few @FOO@-style substitutions.
# Note that this order defines the order that they appear in the documentation.
SET(HDR_FILES_SRC doc_src/index.hdr.in doc_src/tutorial.hdr doc_src/design.hdr
doc_src/license.hdr doc_src/commands.hdr.in doc_src/faq.hdr)
# These are the generated result files.
STRING(REPLACE ".in" "" HDR_FILES ${HDR_FILES_SRC})
# Build lexicon_filter.
ADD_CUSTOM_COMMAND(OUTPUT lexicon_filter ADD_CUSTOM_COMMAND(OUTPUT lexicon_filter
COMMAND build_tools/build_lexicon_filter.sh COMMAND build_tools/build_lexicon_filter.sh
${CMAKE_CURRENT_SOURCE_DIR}/share/completions/ ${CMAKE_CURRENT_SOURCE_DIR}/share/completions/
@ -17,3 +31,33 @@ ADD_CUSTOM_COMMAND(OUTPUT lexicon_filter
doc_src/commands.hdr lexicon_filter.in doc_src/commands.hdr lexicon_filter.in
share/functions/__fish_config_interactive.fish share/functions/__fish_config_interactive.fish
build_tools/build_lexicon_filter.sh) build_tools/build_lexicon_filter.sh)
#
# commands.dr collects documentation on all commands, functions and
# builtins
#
ADD_CUSTOM_COMMAND(OUTPUT doc_src/commands.hdr
COMMAND build_tools/build_commands_hdr.sh ${HELP_SRC}
< doc_src/commands.hdr.in
> ${CMAKE_CURRENT_BINARY_DIR}/doc_src/commands.hdr
DEPENDS ${DOC_SRC_FILES} doc_src/commands.hdr.in build_tools/build_commands_hdr.sh)
# doc.h is a compilation of the various snipptes of text used both for
# the user documentation and for internal help functions into a single
# file that can be parsed by Doxygen to generate the user
# documentation.
ADD_CUSTOM_COMMAND(OUTPUT doc.h
COMMAND cat ${HDR_FILES} > ${CMAKE_CURRENT_BINARY_DIR}/doc.h
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${HDR_FILES})
ADD_CUSTOM_TARGET(doc
COMMAND "(cat Doxyfile.user; echo INPUT_FILTER=./lexicon_filter; echo PROJECT_NUMBER=${FISH_BUILD_VERSION} |\
/usr/bin/env sed 's/-.*//') | doxygen - && touch user_doc)"
DEPENDS ${HDR_FILES_SRC} Doxyfile.user ${DOC_SRC_FILES} doc.h $(HDR_FILES) lexicon_filter)
# doc: $(HDR_FILES_SRC) Doxyfile.user $(HTML_SRC) $(HELP_SRC) doc.h $(HDR_FILES) lexicon_filter
# @echo " doxygen $(em)user_doc$(sgr0)"
# $v (cat Doxyfile.user; echo INPUT_FILTER=./lexicon_filter; echo PROJECT_NUMBER=$(FISH_BUILD_VERSION) | $(SED) "s/-.*//") | doxygen - && touch user_doc
# $v rm -f $(wildcard $(addprefix ./user_doc/html/,arrow*.png bc_s.png bdwn.png closed.png doc.png folder*.png ftv2*.png nav*.png open.png splitbar.png sync_*.png tab*.* doxygen.* dynsections.js jquery.js pages.html))

View file

@ -403,21 +403,8 @@ test_interactive: $(call filter_up_to,test_interactive,$(active_test_goals))
# commands.hdr collects documentation on all commands, functions and # commands.hdr collects documentation on all commands, functions and
# builtins # builtins
# #
doc_src/commands.hdr:$(HELP_SRC) doc_src/commands.hdr.in | doc_src/commands.hdr:$(HELP_SRC) doc_src/commands.hdr.in build_tools/build_commands_hdr.sh
@echo " CAT AWK $(em)$@$(sgr0)" build_tools/build_commands_hdr.sh ${HELP_SRC} < doc_src/commands.hdr.in > $@
$v rm -f command_list.tmp command_list_toc.tmp $@
$v for i in `printf "%s\n" $(HELP_SRC) | LC_ALL=C.UTF-8 sort`; do \
echo "<hr>" >>command_list.tmp; \
cat $$i >>command_list.tmp; \
echo >>command_list.tmp; \
echo >>command_list.tmp; \
NAME=`basename $$i .txt`; \
echo '- <a href="#'$$NAME'">'$$NAME'</a>' >> command_list_toc.tmp; \
echo "Back to <a href='index.html#toc-commands'>command index</a>". >>command_list.tmp; \
done
$v mv command_list.tmp command_list.txt
$v mv command_list_toc.tmp command_list_toc.txt
$v cat $@.in | $(AWK) '{if ($$0 ~ /@command_list_toc@/) { system("cat command_list_toc.txt"); } else if ($$0 ~ /@command_list@/){ system("cat command_list.txt");} else{ print $$0;}}' >$@
toc.txt: $(HDR_FILES:index.hdr=index.hdr.in) | show-SED toc.txt: $(HDR_FILES:index.hdr=index.hdr.in) | show-SED
@echo " SED $(em)$@$(sgr0)" @echo " SED $(em)$@$(sgr0)"

View file

@ -0,0 +1,20 @@
#!/bin/sh
# Builds the commands.hdr file.
# Usage: build_commands_hdr.sh ${HELP_SRC} < commands_hdr.in > commands.hdr
rm -f command_list.tmp command_list_toc.tmp
for i in `printf "%s\n" $@ | LC_ALL=C.UTF-8 sort`; do
echo "<hr>" >>command_list.tmp;
cat $i >>command_list.tmp;
echo >>command_list.tmp;
echo >>command_list.tmp;
NAME=`basename $i .txt`;
echo '- <a href="#'$NAME'">'$NAME'</a>' >> command_list_toc.tmp;
echo "Back to <a href='index.html#toc-commands'>command index</a>". >>command_list.tmp;
done
mv command_list.tmp command_list.txt
mv command_list_toc.tmp command_list_toc.txt
/usr/bin/env awk '{if ($0 ~ /@command_list_toc@/) { system("cat command_list_toc.txt"); }
else if ($0 ~ /@command_list@/){ system("cat command_list.txt");}
else{ print $0;}}'