From ed5640d8b587fbcfed7dd7967f3de04b37a76f26 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:06:44 +0200 Subject: Adding upstream version 4:7.4.7. Signed-off-by: Daniel Baumann --- solenv/bin/mkdocs_portal.sh | 157 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100755 solenv/bin/mkdocs_portal.sh (limited to 'solenv/bin/mkdocs_portal.sh') diff --git a/solenv/bin/mkdocs_portal.sh b/solenv/bin/mkdocs_portal.sh new file mode 100755 index 000000000..8fa120a77 --- /dev/null +++ b/solenv/bin/mkdocs_portal.sh @@ -0,0 +1,157 @@ +#!/usr/bin/env bash + +if [ -n "$debug" ] ; then + set -x +fi + +markdown="markdown" +SRCDIR="$1" +BASE_OUTPUT="$2" + +pushd "$SRCDIR" > /dev/null + + +function header +{ + local title="$1" + local breadcrumb="$2" + local output="$3" + + cat - > $output < + + + $title + + + + + +
+EOF +} + +function footer +{ +local output="$1" + + cat - >> $output < + + + +EOF + +} + +function proc_text +{ + # Local links: [[...]] + # Git links: [git:...] + # Other remote links: [...] + # Headings: == bleh == + # Paragraphs: \n\n + sed -re ' s/\[\[([-_a-zA-Z0-9]+)\]\]/\1<\/a>/g' - \ + | sed -re ' s/\[git:([^]]+)\]/\1<\/a>/g' \ + | sed -re ' s/\[([^]]+)\]/\1<\/a>/g' \ + | sed -re ' s/====([^=]+)====/

\1<\/h4>/g' \ + | sed -re ' s/===([^=]+)===/

\1<\/h3>/g' \ + | sed -re ' s/==([^=]+)==/

\1<\/h2>/g' \ + | sed -re ':a;N;$!ba;s/\n\n/<\/p>

/g' \ + | awk 'BEGIN { print "

" } { print } END { print "

" }' +} + +function proc_text_markdown { + sed -re ' s/\[git:([^]]+)\]/
\1<\/a>/g' +} + +# generate entry page + +echo "generating index page" +header "LibreOffice Modules" " " "$BASE_OUTPUT/index.html" + +for module_name in *; do + if [ -d $module_name ]; then + cur_file=$(echo $module_name/README.md) + if [ -f "$cur_file" ]; then + # write index.html entry + text=$(echo -e "

${module_name}

\n") + if [ ${cur_file: -3} == ".md" ]; then + # This is a markdown file. + header_text="$(head -n1 $cur_file)" + header_text="$(echo ${header_text} | sed -e 's/^\#*//g')" + text="${text}${header_text}" + else + text="${text}$(head -n1 $cur_file | proc_text)" + fi + echo -e "$text" >> "$BASE_OUTPUT/index.html" + + # write detailed module content + header "$module_name" "LibreOffice » ${module_name}" "$BASE_OUTPUT/${module_name}.html" + text="

View module in:" + text="${text}   git" + if $(echo $INPUT_PROJECTS | grep -q $module_name); then + text="${text}   Doxygen" + fi + text="${text}

 

" + echo -e "$text" >> "$BASE_OUTPUT/${module_name}.html" + + if [ ${cur_file: -3} == ".md" ]; then + # This is a markdown file. + text="$(${markdown} $cur_file | proc_text_markdown)" + echo -e "$text" >> "$BASE_OUTPUT/${module_name}.html" + else + proc_text < $cur_file >> "$BASE_OUTPUT/${module_name}.html" + fi + footer "$BASE_OUTPUT/${module_name}.html" + else + empty_modules[${#empty_modules[*]}]=$module_name + fi + fi +done + +if [ ${#empty_modules[*]} -gt 10 ]; then + echo -e "

 

READMEs were not available for these modules:

    \n" >> "$BASE_OUTPUT/index.html" + for module_name in "${empty_modules[@]}"; do + if [[ "$module_name" =~ ^(autom4te.cache|dictionaries|docs|helpcompiler|helpcontent2|include|instdir|lo|translations|workdir)$ ]] + then + continue + fi + echo -e "
  • ${module_name}
  • \n" >> "$BASE_OUTPUT/index.html" + done + echo -e "
\n" >> "$BASE_OUTPUT/index.html" +fi + +footer "$BASE_OUTPUT/index.html" + +popd > /dev/null + +## done -- cgit v1.2.3