cyclone/scripts/generate-doc-index.sh
2022-07-09 17:52:10 -03:00

47 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
# Cyclone Scheme
# https://github.com/justinethier/cyclone
#
# Copyright (c) 2014-2022, Justin Ethier
# All rights reserved.
#
# Generate a sorted list of functions/variables from the API documentation.
#
API=api-index.txt
TMP=/tmp/api-index.txt
cyclone scripts/convert-doc-index.scm
cyclone scripts/alphabetize.scm
grep "^- \[" docs/api/* | ./scripts/convert-doc-index > $TMP
grep -r "^- \[" docs/api/cyclone/* | ./scripts/convert-doc-index >> $TMP
grep -r "^- \[" docs/api/scheme/* | ./scripts/convert-doc-index >> $TMP
grep -r "^- \[" docs/api/srfi/* | ./scripts/convert-doc-index >> $TMP
grep -r "^\[" docs/api/srfi/* | ./scripts/convert-doc-index >> $TMP
grep -r "^\[" docs/api/cyclone/* | ./scripts/convert-doc-index >> $TMP
sort $TMP | ./scripts/alphabetize > $API
# --------------------------------------------------------------------------------
# Index with SEXP format (needed by Winds)
# The sed command bellow transforms...
# ; newline
#- - - ; hyphens used as sections divs
#[`abs`](api/scheme/base.md#abs) ; Markdown link
#[`acos`](api/scheme/inexact.md#acos) ; Markdown link
# ...into...
#((abs (scheme base)) ; ((definition1 library-that-contains-it)
# (acos (scheme inexact))) ; (definition2 library-that-contains-it))
API_SEXP=api-index.scm
sed -e '/^-\|^$/d' \
-e 's/\[`/(/' \
-e 's/`\](api\// (/' \
-e 's/.md.*$/))/' \
-e 's/\// /g' \
-e 's/[[:space:]]\+/ /g' $API > $API_SEXP
# Add extra opening and closing parentheses
sed -e '1s/^/(/' \
-e '$s/$/)/' \
-i $API_SEXP