testsAndMisc/linux_configuration/scripts/single_use/utils/lib/offline_python.sh
Krzysztof kuhy Rudnicki 63650fbc45 Split offline docs and arch optimiser; defer libre_translate
setup_offline_docs.sh 713 -> 121 across six libs, carved one language at
a time since the first cut left offline_cpp at 545. optimize_arch_
desktop.sh 623 -> 118.

Two recurring traps again: a script with no SCRIPT_DIR at all, and libs
that chained rather than being sourced from the entry. Both now checked
for routinely.

libre_translate.sh is reverted and stays at 488. Exporting GENERATED to
fix one SC2034 revealed eighteen more - when a fix uncovers more of the
same, the seam is imaginary, not the fix wrong.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011w2Pj4Ek3ZNMQVYcFHgXDY
2026-08-16 20:09:54 +02:00

70 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Python documentation download and indexing.
#
# Sourced by setup_offline_docs.sh; split out to keep it under the 250-line
# cap. Sourced rather than run, so it inherits the caller's strict mode
# and the variables defined above the source line.
#==============================================================================
# Python Documentation
# Source: https://docs.python.org/3/download.html
#==============================================================================
download_python_docs() {
print_header "Python Documentation"
local dest="$DOCS_DIR/python"
# Check if already downloaded
if [ -f "$dest/library/index.html" ]; then
print_status "Python docs already present, checking for updates..."
fi
print_status "Downloading Python 3.12 documentation..."
# Download HTML documentation (most searchable)
local url="https://www.python.org/ftp/python/doc/3.12.8/python-3.12.8-docs-html.tar.bz2"
local archive="/tmp/python-docs.tar.bz2"
if curl -L -o "$archive" "$url" 2> /dev/null; then
print_status "Extracting..."
tar -xjf "$archive" -C "$dest" --strip-components=1
rm -f "$archive"
print_success "Python documentation installed to $dest"
# Build index
build_python_index
else
print_error "Failed to download Python docs"
print_status "Alternative: Use 'python -m pydoc' for built-in docs"
fi
}
build_python_index() {
print_status "Building Python documentation index..."
local dest="$DOCS_DIR/python"
local index="$INDEX_DIR/python_index.txt"
# Create searchable index: term -> file path
{
# Index library modules
find "$dest/library" -name "*.html" -exec basename {} .html \; 2> /dev/null | while read -r mod; do
echo "$mod $dest/library/$mod.html"
done
# Index built-in functions from functions.html
if [ -f "$dest/library/functions.html" ]; then
grep -oP '(?<=id=")[^"]+' "$dest/library/functions.html" 2> /dev/null | while read -r func; do
echo "$func $dest/library/functions.html#$func"
done
fi
# Index from general index
if [ -f "$dest/genindex.html" ]; then
grep -oP 'href="([^"]+)"[^>]*>([^<]+)' "$dest/genindex.html" 2> /dev/null |
sed -E 's/href="([^"]+)"[^>]*>([^<]+)/\2 \1/' |
head -5000
fi
} | sort -u > "$index"
print_success "Python index created with $(wc -l < "$index") entries"
}