fix: pick variant wrong labels

This commit is contained in:
v4n
2025-09-16 15:35:54 +03:00
parent 96163fc7d9
commit 53d9f8a093
2 changed files with 31 additions and 25 deletions
+30 -24
View File
@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
VERSION="0.6.12" VERSION="0.6.13"
# --- Globals --- # --- Globals ---
@@ -194,40 +194,46 @@ function parse_indexes() {
_returned_indexes+=("$i") _returned_indexes+=("$i")
done done
fi fi
# remove index -5 # exclude index -5
elif [[ "$index" =~ ^-[0-9] ]]; then elif [[ "$index" =~ ^-[0-9]+$ ]]; then
index=${index#-} # remove the - sign index=${index#-} # remove the - sign
# if _returned_indexes is empty, populate it with every number from 1 to range # if _returned_indexes is empty, populate it with every number from 1 to range
[[ ${#_returned_indexes[@]} -eq 0 ]] && for ((i=1; i<=range; i++)); do _returned_indexes+=("$i"); done [[ ${#_returned_indexes[@]} -eq 0 ]] && for ((i=1; i<=range; i++)); do _returned_indexes+=("$i"); done
# if exclusion range [[ $index -lt 1 || $index -gt $range ]] && { log ERROR "Function parse indexes: index $index out of range (1 -> $range)"; exit 1; }
if [[ "$index" =~ ^[0-9]+\.\.[0-9]+$ ]]; then
start=$(echo "$index" | cut -d. -f1)
end=$(echo "$index" | cut -d. -f3)
[[ $start -lt 1 || $end -lt 1 || $start -gt $range || $end -gt $range ]] && { log ERROR "Function parse indexes: exclusion range $index out of range (1 -> $range)"; exit 1; } _returned_indexes=($(printf "%s\n" "${_returned_indexes[@]}" | grep -vx "$index"))
if [[ $start -le $end ]]; then # exclusion range -3..5
for ((i=start; i<=end; i++)); do elif [[ "$index" =~ ^-[0-9]+\.\.[0-9]+$ ]]; then
_returned_indexes=($(printf "%s\n" "${_returned_indexes[@]}" | grep -vx "$index")) index=${index#-} # remove the - sign
done
else # if _returned_indexes is empty, populate it with every number from 1 to range
for ((i=start; i>=end; i--)); do [[ ${#_returned_indexes[@]} -eq 0 ]] && for ((i=1; i<=range; i++)); do _returned_indexes+=("$i"); done
_returned_indexes=($(printf "%s\n" "${_returned_indexes[@]}" | grep -vx "$index"))
done start=$(echo "$index" | cut -d. -f1)
fi end=$(echo "$index" | cut -d. -f3)
[[ $start -lt 1 || $end -lt 1 || $start -gt $range || $end -gt $range ]] && { log ERROR "Function parse indexes: exclusion range $index out of range (1 -> $range)"; exit 1; }
if [[ $start -le $end ]]; then
for ((i=start; i<=end; i++)); do
_returned_indexes=($(printf "%s\n" "${_returned_indexes[@]}" | grep -vx "$i"))
log INFO i
done
else else
# single exclusion for ((i=start; i>=end; i--)); do
[[ $index -lt 1 || $index -gt $range ]] && { log ERROR "Function parse indexes: index $index out of range (1 -> $range)"; exit 1; } _returned_indexes=($(printf "%s\n" "${_returned_indexes[@]}" | grep -vx "$i"))
done
_returned_indexes=($(printf "%s\n" "${_returned_indexes[@]}" | grep -vx "$index"))
fi fi
else else
log ERROR "Function parse indexes: invalid index $index" log ERROR "Function parse indexes: invalid index $index"
exit 1 exit 1
fi fi
done done
log INFO "Parsed indexes: ${_returned_indexes[*]}"
} }
function get_mod_name_and_index() { function get_mod_name_and_index() {
@@ -951,10 +957,10 @@ function mod_install() {
[[ $i -eq 0 && "$variant_name" == "$mod_dir" ]] && variant_name="$mod_name [base folder]" [[ $i -eq 0 && "$variant_name" == "$mod_dir" ]] && variant_name="$mod_name [base folder]"
fi fi
if [[ $i -ne 0 ]]; then if [[ $i -eq 0 && "$variant_name" == "$mod_dir" ]]; then
variants[$i]="$variant_name"
else
variants[0]="base" variants[0]="base"
else
variants[$i]="$variant_name"
fi fi
log INFO "$((i + 1)). $variant_name" log INFO "$((i + 1)). $variant_name"
+1 -1
View File
@@ -1 +1 @@
0.6.12 0.6.13