Downgrade nur mit neuer Option --force
This commit is contained in:
+22
-5
@@ -11,7 +11,7 @@ PROG_NAME=$(basename "$0") || { printf 'Fehler: basename fehlgeschlagen\n' >&2;
|
||||
readonly PROG_NAME
|
||||
|
||||
usage() {
|
||||
printf 'Verwendung: %s [--beta|-b]\n' "$PROG_NAME" >&2
|
||||
printf 'Verwendung: %s [--beta|-b] [--force|-f]\n' "$PROG_NAME" >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
@@ -30,18 +30,24 @@ die() {
|
||||
}
|
||||
|
||||
parse_args() {
|
||||
local use_beta=false
|
||||
local use_beta_ref=$1
|
||||
local force_ref=$2
|
||||
local use_beta_value=false
|
||||
local force_value=false
|
||||
shift 2
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--beta|-b) use_beta=true ;;
|
||||
--beta|-b) use_beta_value=true ;;
|
||||
--force|-f) force_value=true ;;
|
||||
-h|--help) usage ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
printf '%s\n' "$use_beta"
|
||||
printf -v "$use_beta_ref" '%s' "$use_beta_value"
|
||||
printf -v "$force_ref" '%s' "$force_value"
|
||||
}
|
||||
|
||||
get_local_version() {
|
||||
@@ -167,10 +173,11 @@ install_ollama() {
|
||||
|
||||
main() {
|
||||
local use_beta=false
|
||||
local force_downgrade=false
|
||||
local local_ver stable_ver beta_ver
|
||||
local target_ver=""
|
||||
|
||||
use_beta=$(parse_args "$@")
|
||||
parse_args use_beta force_downgrade "$@"
|
||||
check_dependencies
|
||||
|
||||
local_ver=$(get_local_version)
|
||||
@@ -233,6 +240,16 @@ main() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# Downgrade-Schutz: Eine Installation älterer Version als die bereits
|
||||
# installierte nur mit --force/-f erlauben.
|
||||
if [[ -n "$local_ver" && -n "$target_ver" && "$(cmp_versions "$target_ver" "$local_ver")" == -1 ]]; then
|
||||
if [[ "$force_downgrade" != true ]]; then
|
||||
printf 'Aktuelle Version %s ist neuer als Zielversion %s. Downgrade abgebrochen (verwende --force/-f, um es trotzdem durchzuführen).\n' "$local_ver" "$target_ver" >&2
|
||||
return 0
|
||||
fi
|
||||
printf 'Downgrade wird erzwungen: %s -> %s\n' "$local_ver" "$target_ver"
|
||||
fi
|
||||
|
||||
# Bei Beta-Installation die gewünschte Version an das Installer-Skript übergeben.
|
||||
if [[ "$use_beta" == true && -n "$target_ver" && "$target_ver" != "$stable_ver" ]]; then
|
||||
install_ollama "$target_ver"
|
||||
|
||||
Reference in New Issue
Block a user