Files
spring-ai/rag/scripts/capture-javap.sh
T

40 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Writes docs/output/12-api-facts.txt: the public API of every Spring AI class this repository
# relies on, read from the jars the build resolves (not from documentation).
set -euo pipefail
cd "$(dirname "$0")/.."
mkdir -p docs/output target
mvn -B -q dependency:build-classpath -Dmdep.outputFile=target/classpath.txt >/dev/null
CP="$(cat target/classpath.txt)"
OUT=docs/output/12-api-facts.txt
jar_of() { tr ':' '\n' < target/classpath.txt | grep "/$1-[0-9]" | head -1; }
jp() { echo "## $1"; javap -cp "$CP" -public "$1" | grep -v '^Compiled' | sed 's/java\.util\.//g; s/java\.lang\.//g'; echo; }
{
echo "# Spring AI API facts, read with javap from the jars this build resolves"
echo
echo "spring-ai.version: $(grep -m1 -o '<spring-ai.version>[^<]*' pom.xml | sed 's/.*>//')"
echo
echo "## classes in org/springframework/ai/rag (top level, from spring-ai-rag)"
unzip -Z1 "$(jar_of spring-ai-rag)" | grep '\.class$' | grep -v '\$' | sed 's|org/springframework/ai/rag/||; s|\.class||' | sort
echo
echo "## classes anywhere in spring-ai-rag whose name contains \"rerank\": $(unzip -Z1 "$(jar_of spring-ai-rag)" | grep -ic rerank || true)"
echo
echo "## classes in any jar on this project's classpath whose name contains \"SemanticSearchCache\" or \"SemanticCache\": $(for j in $(tr ':' '\n' < target/classpath.txt); do unzip -Z1 "$j" 2>/dev/null; done | grep -Eic 'SemanticSearchCache|SemanticCache' || true)"
echo
jp org.springframework.ai.transformer.splitter.TokenTextSplitter
jp 'org.springframework.ai.transformer.splitter.TokenTextSplitter$Builder'
jp org.springframework.ai.reader.pdf.PagePdfDocumentReader
jp 'org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig$Builder'
jp org.springframework.ai.rag.postretrieval.document.DocumentPostProcessor
jp org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever
jp 'org.springframework.ai.rag.retrieval.search.VectorStoreDocumentRetriever$Builder'
jp 'org.springframework.ai.rag.generation.augmentation.ContextualQueryAugmenter$Builder'
jp 'org.springframework.ai.rag.advisor.RetrievalAugmentationAdvisor$Builder'
jp 'org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor$Builder'
jp org.springframework.ai.chat.evaluation.FactCheckingEvaluator
jp org.springframework.ai.vectorstore.VectorStore
jp 'org.springframework.ai.vectorstore.SearchRequest$Builder'
} > "$OUT"
echo "wrote $OUT"