added wine/proton separation by prefix bit depth
This commit is contained in:
		
							
								
								
									
										33
									
								
								winehelper
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								winehelper
									
									
									
									
									
								
							| @@ -1574,7 +1574,7 @@ generate_wine_metadata () { | |||||||
|     # Формат: "ключ_json;репозиторий;расширение_файла;шаблон_исключения" |     # Формат: "ключ_json;репозиторий;расширение_файла;шаблон_исключения" | ||||||
|     local sources=( |     local sources=( | ||||||
|         "proton_ge;GloriousEggroll/proton-ge-custom;\\.tar\\.gz$;github-action" |         "proton_ge;GloriousEggroll/proton-ge-custom;\\.tar\\.gz$;github-action" | ||||||
|         "wine_kron4ek;Kron4ek/Wine-Builds;\\.tar\\.xz$;-x86" |         "wine_kron4ek;Kron4ek/Wine-Builds;\\.tar\\.xz$;" | ||||||
|         "proton_lg;Castro-Fidel/wine_builds;\\.tar\\.xz$;plugins" |         "proton_lg;Castro-Fidel/wine_builds;\\.tar\\.xz$;plugins" | ||||||
|         "proton_cachyos;CachyOS/proton-cachyos;\\.tar\\.xz$;znver" |         "proton_cachyos;CachyOS/proton-cachyos;\\.tar\\.xz$;znver" | ||||||
|         "proton_sarek;pythonlover02/Proton-Sarek;\\.tar\\.gz$;" |         "proton_sarek;pythonlover02/Proton-Sarek;\\.tar\\.gz$;" | ||||||
| @@ -1638,13 +1638,40 @@ select_wine_version() { | |||||||
|     WINE_METADATA_FILE="$WH_TMP_DIR/wine_metadata.json" |     WINE_METADATA_FILE="$WH_TMP_DIR/wine_metadata.json" | ||||||
|     [[ ! -f "$WINE_METADATA_FILE" ]] && fatal "Файл метаданных WINE не найден." |     [[ ! -f "$WINE_METADATA_FILE" ]] && fatal "Файл метаданных WINE не найден." | ||||||
|  |  | ||||||
|  |     local jq_filter | ||||||
|  |     if [[ "$WINEARCH" == "win64" ]]; then | ||||||
|  |         print_info "Фильтруем версии для 64-битного префикса..." | ||||||
|  |         # Для 64-битных префиксов показываем сборки с 'amd64', 'x86_64', 'wow64' | ||||||
|  |         # или те, у которых нет явного указания на 32-битную архитектуру. | ||||||
|  |         jq_filter=' | ||||||
|  |             .[] | .[] | | ||||||
|  |             select( | ||||||
|  |                 (.name | test("amd64|x86_64|wow64")) or | ||||||
|  |                 (.name | test("i[3-6]86|x86(?!_64)") | not) | ||||||
|  |             ) | .name | ||||||
|  |         ' | ||||||
|  |     else # win32 | ||||||
|  |         print_info "Фильтруем версии для 32-битного префикса..." | ||||||
|  |         # Для 32-битных префиксов показываем только сборки с явным указанием 32-битной архитектуры. | ||||||
|  |         jq_filter=' | ||||||
|  |             .[] | .[] | | ||||||
|  |             select(.name | test("i[3-6]86|x86(?!_64)")) | .name | ||||||
|  |         ' | ||||||
|  |     fi | ||||||
|  |  | ||||||
|     # Создание единого, отсортированного списка версий |     # Создание единого, отсортированного списка версий | ||||||
|     local versions=() |     local versions=() | ||||||
|     mapfile -t versions < <(jq -r '.[] | .[] | .name' "$WINE_METADATA_FILE" | sort -V -r | uniq) |     mapfile -t versions < <(jq -r "$jq_filter" "$WINE_METADATA_FILE" | sort -V -r | uniq) | ||||||
|  |  | ||||||
|  |     if [[ ${#versions[@]} -eq 0 ]]; then | ||||||
|  |         print_warning "Не найдено подходящих версий WINE/Proton для архитектуры $WINEARCH." | ||||||
|  |         print_warning "Будет использована версия по умолчанию: $WH_WINE_USE" | ||||||
|  |         return | ||||||
|  |     fi | ||||||
|  |  | ||||||
|     local options=("system" "${versions[@]}") |     local options=("system" "${versions[@]}") | ||||||
|  |  | ||||||
|     print_info "Выберите версию WINE/Proton:" |     print_info "Выберите версию WINE/Proton для $WINEARCH префикса:" | ||||||
|     PS3="Ваш выбор: " |     PS3="Ваш выбор: " | ||||||
|     select opt in "Отмена" "${options[@]}"; do |     select opt in "Отмена" "${options[@]}"; do | ||||||
|         if [[ "$REPLY" == "1" ]] || [[ "$opt" == "Отмена" ]]; then |         if [[ "$REPLY" == "1" ]] || [[ "$opt" == "Отмена" ]]; then | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user