diff options
| author | Anton Bobov <anton@bobov.name> | 2024-09-07 12:16:37 +0500 |
|---|---|---|
| committer | Anton Bobov <anton@bobov.name> | 2024-09-07 12:17:48 +0500 |
| commit | 8a19d8bb7a9245d7bd699fd939b8c9302b22eb93 (patch) | |
| tree | d71b3eb4e9a2b6ca29820858a704a2af1fec7c5f | |
| parent | f0aba4025bc04b4f752b2ad82536bb21c5d843a3 (diff) | |
Add ollama model update script
| -rwxr-xr-x | ollama-update | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ollama-update b/ollama-update new file mode 100755 index 0000000..c575ccc --- /dev/null +++ b/ollama-update @@ -0,0 +1,43 @@ +#!/bin/bash +# Updates all Ollama models. + +set -euo pipefail + +is_ollama_running() { + ollama ps &>/dev/null +} + +ensure_ollama_running() { + if ! is_ollama_running; then + ollama serve &>/dev/null 2>&1 & + OLLAMA_PID=$! + trap 'kill $OLLAMA_PID' EXIT + local retry=3 + while ! is_ollama_running; do + retry=$((retry - 1)) + if [ $retry -lt 1 ]; then + echo "ollama serve not responding" >&2 + exit 1 + fi + sleep 1s + done + fi +} + +update_models() { + ollama list | awk 'NR>1{print $1}' | while read -r model; do + echo "Updating $model" + ollama pull "$model" + done +} + +main() { + if ! command -v ollama >/dev/null; then + echo "No ollama command in path. See https://ollama.com/." + exit 1 + fi + ensure_ollama_running + update_models +} + +main "$@" |
