diff --git a/src/main.sh b/src/main.sh index 2cb8064..ad31449 100755 --- a/src/main.sh +++ b/src/main.sh @@ -1,9 +1,23 @@ #!/bin/bash +# +# wiki-cli - een kleine Wikipedia-zoektool voor de terminal. +# Werkt zowel direct met argumenten (zoals nmcli) als interactief +# in een shell-achtige loop wanneer je 'm zonder argumenten start. +# +# Gebruik: +# wiki-cli -> start interactieve modus +# wiki-cli search -> zoek direct naar pagina's +# wiki-cli lang [nl|en|fr|de] -> toon of wijzig de interfacetaal +# wiki-cli help -> toon hulp set -uo pipefail +# --------------------------------------------------------------------------- +# Config +# --------------------------------------------------------------------------- CONFIG_DIR="$HOME/.config/wiki-cli" CONFIG_FILE="$CONFIG_DIR/config.conf" +CACHE_FILE="$CONFIG_DIR/last_search" LANG_CODE="en" # fallback totdat config geladen is SUPPORTED_LANGS=(nl en fr de) @@ -48,6 +62,9 @@ first_run_setup() { save_config } +# --------------------------------------------------------------------------- +# Vertalingen +# --------------------------------------------------------------------------- declare -A MSG MSG["nl,search_prompt"]="Zoek naar pagina's:" @@ -149,6 +166,9 @@ t() { echo "${MSG["$LANG_CODE,$1"]}" } +# --------------------------------------------------------------------------- +# Dependencies +# --------------------------------------------------------------------------- ensure_dependency() { local pkg="$1" if command -v "$pkg" >/dev/null 2>&1; then @@ -168,8 +188,22 @@ check_dependencies() { ensure_dependency curl } +# --------------------------------------------------------------------------- +# Wikipedia-functies +# --------------------------------------------------------------------------- TITELS=() +save_titles() { + mkdir -p "$CONFIG_DIR" + printf '%s\n' "${TITELS[@]}" > "$CACHE_FILE" +} + +load_titles() { + if [ -f "$CACHE_FILE" ]; then + mapfile -t TITELS < "$CACHE_FILE" + fi +} + zoek() { local term="$*" if [ -z "$term" ]; then @@ -193,6 +227,8 @@ zoek() { return fi + save_titles + for i in "${!TITELS[@]}"; do echo "$((i + 1)). ${TITELS[$i]}" done @@ -247,6 +283,9 @@ set_lang() { fi } +# --------------------------------------------------------------------------- +# Command dispatch (gebruikt door zowel interactieve modus als losse call) +# --------------------------------------------------------------------------- dispatch() { local cmd="$1" shift || true @@ -284,12 +323,16 @@ interactive_mode() { done } +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- load_config if [ ! -f "$CONFIG_FILE" ]; then first_run_setup fi check_dependencies +load_titles if [ "$#" -eq 0 ]; then interactive_mode