Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f1f2fabe97 | |||
| 9480b5fdde |
69
ollama
69
ollama
@@ -1,26 +1,74 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
SCRIPT_VERSION="1.1.0"
|
||||
|
||||
# Default values (should be configured in ~/.ollama/config.json)
|
||||
DEFAULT_OLLAMA_API_URL="https://ollama.local"
|
||||
DEFAULT_OLLAMA_USER="ollama"
|
||||
DEFAULT_OLLAMA_PASS_PATH=""
|
||||
DEFAULT_OLLAMA_PASSWORD=""
|
||||
DEFAULT_MODEL_DEFAULT="llama2"
|
||||
|
||||
# Configuration file
|
||||
CONFIG_FILE="${HOME}/.ollama/config.json"
|
||||
|
||||
# Load configuration from config file
|
||||
load_config() {
|
||||
if [[ -f "$CONFIG_FILE" ]]; then
|
||||
# Validate JSON first
|
||||
if ! jq empty "$CONFIG_FILE" 2>/dev/null; then
|
||||
echo "Error: Invalid JSON in config file: $CONFIG_FILE" >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Load values from config file, with fallback to empty if keys don't exist
|
||||
OLLAMA_API_URL=$(jq -r '.api_url // empty' "$CONFIG_FILE") || return 1
|
||||
OLLAMA_USER=$(jq -r '.user // empty' "$CONFIG_FILE") || return 1
|
||||
OLLAMA_PASS_PATH=$(jq -r '.password_path // empty' "$CONFIG_FILE") || return 1
|
||||
OLLAMA_PASSWORD=$(jq -r '.password // empty' "$CONFIG_FILE") || return 1
|
||||
DEFAULT_MODEL=$(jq -r '.default_model // empty' "$CONFIG_FILE") || return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
# Apply configuration with environment variable overrides
|
||||
load_config || exit 1
|
||||
OLLAMA_API_URL="${OLLAMA_API_URL_ENV:-${OLLAMA_API_URL:-$DEFAULT_OLLAMA_API_URL}}"
|
||||
OLLAMA_USER="${OLLAMA_USER_ENV:-${OLLAMA_USER:-$DEFAULT_OLLAMA_USER}}"
|
||||
OLLAMA_PASS_PATH="${OLLAMA_PASS_PATH_ENV:-${OLLAMA_PASS_PATH:-$DEFAULT_OLLAMA_PASS_PATH}}"
|
||||
OLLAMA_PASSWORD="${OLLAMA_PASSWORD_ENV:-${OLLAMA_PASSWORD:-$DEFAULT_OLLAMA_PASSWORD}}"
|
||||
DEFAULT_MODEL="${DEFAULT_MODEL_ENV:-${DEFAULT_MODEL:-$DEFAULT_MODEL_DEFAULT}}"
|
||||
|
||||
# Allow direct env var overrides (OLLAMA_API_URL, OLLAMA_USER, OLLAMA_PASS_PATH, OLLAMA_PASSWORD, DEFAULT_MODEL)
|
||||
OLLAMA_API_URL="${OLLAMA_API_URL:-$DEFAULT_OLLAMA_API_URL}"
|
||||
OLLAMA_USER="${OLLAMA_USER:-$DEFAULT_OLLAMA_USER}"
|
||||
OLLAMA_PASS_PATH="${OLLAMA_PASS_PATH:-$DEFAULT_OLLAMA_PASS_PATH}"
|
||||
OLLAMA_PASSWORD="${OLLAMA_PASSWORD:-$DEFAULT_OLLAMA_PASSWORD}"
|
||||
DEFAULT_MODEL="${DEFAULT_MODEL:-$DEFAULT_MODEL_DEFAULT}"
|
||||
|
||||
OLLAMA_API_URL="https://ollama-api.hq.ars9.space/api"
|
||||
OLLAMA_USER="ollama"
|
||||
OLLAMA_PASS_PATH="device/god-stronghold/authelia/users/ollama/password"
|
||||
DEFAULT_MODEL="llama3:8b"
|
||||
CONTEXT_FILE="${OLLAMA_CONTEXT_FILE:-$HOME/.ollama/context.json}"
|
||||
PROFILE_DIR="${OLLAMA_PROFILE_DIR:-$HOME/.ollama/profiles}"
|
||||
OUTPUT_FORMAT="text" # Can be "text" or "json"
|
||||
SCRIPT_VERSION="1.0.0"
|
||||
|
||||
# Check for required dependencies
|
||||
check_dependencies() {
|
||||
local missing=()
|
||||
|
||||
for cmd in pass curl jq column less; do
|
||||
# Always required
|
||||
for cmd in curl jq column less; do
|
||||
if ! command -v "$cmd" &> /dev/null; then
|
||||
missing+=("$cmd")
|
||||
fi
|
||||
done
|
||||
|
||||
# Only required if using pass for password
|
||||
if [[ -n "$OLLAMA_PASS_PATH" ]]; then
|
||||
if ! command -v pass &> /dev/null; then
|
||||
missing+=("pass")
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ${#missing[@]} -gt 0 ]]; then
|
||||
echo "Error: missing required command(s): ${missing[*]}" >&2
|
||||
return 1
|
||||
@@ -112,9 +160,16 @@ ensure_default_profile() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Get password from pass
|
||||
# Get password from direct config or from pass
|
||||
# Returns empty string if no password configured (for servers without auth)
|
||||
get_password() {
|
||||
if [[ -n "$OLLAMA_PASSWORD" ]]; then
|
||||
echo "$OLLAMA_PASSWORD"
|
||||
elif [[ -n "$OLLAMA_PASS_PATH" ]]; then
|
||||
pass "$OLLAMA_PASS_PATH"
|
||||
else
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
# Generate a completion
|
||||
|
||||
Reference in New Issue
Block a user