--force reparieren, Tests ergänzen, Aufräumen
- --force erlaubt jetzt tatsächlich das Downgrade auf Stable/Beta (der Downgrade-Block war vorher unerreichbar) - test.sh: Tests für cmp_versions und die Update-Entscheidung (gefakete curl/ollama, kein Netz nötig) - --help: stdout + Exit 0; unbekannte Argumente werden benannt - tote Zeilen entfernt (nullglob, basename-Zeremonie) - README: Nummerierung und nullglob-Erwähnung korrigiert
This commit is contained in:
1 parent
bca72afbe8
commit
2aa9b70b29
4 files changed
+124
-14
No files matched your search
+22
-9
@@ -3,16 +3,14 @@
|
||||
# updateOllama: Lädt und installiert die aktuelle Ollama-Version (stable oder beta).
|
||||
|
||||
set -euo pipefail
|
||||
shopt -s nullglob
|
||||
|
||||
readonly GITHUB_API="https://api.github.com/repos/ollama/ollama"
|
||||
readonly INSTALL_URL="https://ollama.com/install.sh"
|
||||
PROG_NAME=$(basename "$0") || { printf 'Fehler: basename fehlgeschlagen\n' >&2; exit 1; }
|
||||
PROG_NAME=$(basename "$0")
|
||||
readonly PROG_NAME
|
||||
|
||||
usage() {
|
||||
printf 'Verwendung: %s [--beta|-b] [--force|-f]\n' "$PROG_NAME" >&2
|
||||
exit 2
|
||||
print_usage() {
|
||||
printf 'Verwendung: %s [--beta|-b] [--force|-f]\n' "$PROG_NAME"
|
||||
}
|
||||
|
||||
check_dependencies() {
|
||||
@@ -40,8 +38,12 @@ parse_args() {
|
||||
case "$1" in
|
||||
--beta|-b) use_beta_value=true ;;
|
||||
--force|-f) force_value=true ;;
|
||||
-h|--help) usage ;;
|
||||
*) usage ;;
|
||||
-h|--help) print_usage; exit 0 ;;
|
||||
*)
|
||||
printf 'Unbekanntes Argument: %s\n' "$1" >&2
|
||||
print_usage >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
@@ -85,7 +87,7 @@ get_latest_version() {
|
||||
printf '%s\n' "$json" | sed -nE 's/.*"tag_name": *"v?([^"]+)".*/\1/p' | head -n1
|
||||
}
|
||||
|
||||
# Vergleicht zwei Versionsstrings (SemVer-ähnlich, Suffixe alphabetisch).
|
||||
# Vergleicht zwei Versionsstrings (SemVer-ähnlich, Suffixe per 'sort -V').
|
||||
# Gibt -1, 0 oder 1 aus.
|
||||
cmp_versions() {
|
||||
local a=${1#v} b=${2#v}
|
||||
@@ -223,6 +225,11 @@ main() {
|
||||
elif [[ "$(cmp_versions "$stable_ver" "$local_ver")" == 1 ]]; then
|
||||
target_ver="$stable_ver"
|
||||
printf 'Stable-Update verfuegbar: %s -> %s\n' "$local_ver" "$target_ver"
|
||||
elif [[ "$force_downgrade" == true && "$(cmp_versions "$beta_ver" "$local_ver")" == -1 ]]; then
|
||||
# Kein neueres Release; --force erlaubt das Downgrade auf die Beta.
|
||||
target_ver="$beta_ver"
|
||||
elif [[ "$force_downgrade" == true && "$(cmp_versions "$stable_ver" "$local_ver")" == -1 ]]; then
|
||||
target_ver="$stable_ver"
|
||||
else
|
||||
printf 'Kein Update erforderlich.\n'
|
||||
return 0
|
||||
@@ -231,6 +238,9 @@ main() {
|
||||
if [[ "$(cmp_versions "$stable_ver" "$local_ver")" == 1 ]]; then
|
||||
target_ver="$stable_ver"
|
||||
printf 'Update verfuegbar: %s -> %s\n' "$local_ver" "$target_ver"
|
||||
elif [[ "$force_downgrade" == true && "$(cmp_versions "$stable_ver" "$local_ver")" == -1 ]]; then
|
||||
# Kein neueres Release; --force erlaubt das Downgrade auf Stable.
|
||||
target_ver="$stable_ver"
|
||||
else
|
||||
printf 'Kein Update erforderlich.\n'
|
||||
return 0
|
||||
@@ -256,4 +266,7 @@ main() {
|
||||
fi
|
||||
}
|
||||
|
||||
main "$@"
|
||||
# Nur ausführen, wenn direkt aufgerufen — beim Sourcing (test.sh) nicht starten.
|
||||
if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
|
||||
main "$@"
|
||||
fi
|
||||
Reference in new issue
Block a user