testsAndMisc/linux_configuration/scripts/single_use/utils/lib/docs_rust.sh
Krzysztof kuhy Rudnicki 7a74804786 Split three more linux_configuration giants
raspberry_pi_nextcloud.sh 1276 -> 163, root_bl9000.sh 1116 -> 211,
lookup_docs.sh 942 -> 165. Sixteen new libs.

lookup_python was one 300-line function; its keyword-to-anchor mapping
became python_keyword_doc, emitting result and desc tab-separated so the
caller keeps its control flow.

bl9000_mtkclient had cd X; work; cd - with three return paths.
install_mtkclient became a subshell; extract_boot_with_mtkclient could
not, since it exports BOOT_IMG - so the venv check moved before the cd,
the cd is guarded, and the restores use a saved $PWD.

Four more unguarded cd calls fixed, and a third instance of the lib
chaining bug flattened. lookup_docs.sh had no SCRIPT_DIR at all.

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

99 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# Rust documentation lookup.
#
# Sourced by lookup_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.
#==============================================================================
# Rust specific lookup
#==============================================================================
lookup_rust() {
local term="$1"
local result=""
local desc=""
if command -v rustup &>/dev/null; then
# Use rustup doc to get path
local rust_doc_path
rust_doc_path=$(rustup doc --path 2>/dev/null | head -1 | xargs dirname 2>/dev/null)
# Search in std docs
if [ -d "$rust_doc_path/std" ]; then
local found
found=$(find "$rust_doc_path/std" -name "*${term}*" -type f 2>/dev/null | head -1)
if [ -n "$found" ]; then
result="$found"
desc="Rust: $term"
fi
fi
fi
if [ -n "$result" ]; then
echo "$result|$desc"
fi
}
#==============================================================================
# Go specific lookup
#==============================================================================
lookup_go() {
local term="$1"
local result=""
local desc=""
if command -v go &>/dev/null; then
# Check if it's a stdlib package
if go doc "$term" &>/dev/null; then
result="go doc $term"
desc="Go package: $term (use 'go doc $term' to view)"
fi
fi
if [ -n "$result" ]; then
echo "$result|$desc"
fi
}
#==============================================================================
# Shell specific lookup
#==============================================================================
lookup_shell() {
local term="$1"
local doc_dir="$DOCS_DIR/shell"
local result=""
local desc=""
# Check bash builtins
if [ -f "$doc_dir/bash_builtins.txt" ]; then
if grep -q "=== $term ===" "$doc_dir/bash_builtins.txt" 2>/dev/null; then
result="$doc_dir/bash_builtins.txt"
desc="Bash builtin: $term"
fi
fi
# Check common commands
if [ -z "$result" ] && [ -f "$doc_dir/common_commands.txt" ]; then
if grep -q "^$term" "$doc_dir/common_commands.txt" 2>/dev/null; then
local cmd_desc
cmd_desc=$(grep "^$term" "$doc_dir/common_commands.txt" | head -1)
result="$doc_dir/common_commands.txt"
desc="Shell command: $cmd_desc"
fi
fi
# Try man page
if [ -z "$result" ]; then
local man_path
man_path=$(man -w "$term" 2>/dev/null)
if [ -n "$man_path" ]; then
result="man $term"
desc="Manual page: $term (use 'man $term' to view)"
fi
fi
if [ -n "$result" ]; then
echo "$result|$desc"
fi
}