the description of the prepared prefix has been corrected

This commit is contained in:
Sergey Palcheh
2025-12-03 12:43:49 +06:00
parent 15b6fdd216
commit ded62bd9ac
2 changed files with 51 additions and 32 deletions

View File

@@ -1865,46 +1865,49 @@ select_prepared_prefix() {
local in_prefix_section=false local in_prefix_section=false
local current_description="" local current_description=""
local current_prefix_name=""
while IFS= read -r line; do while IFS= read -r line; do
if [[ "$line" =~ ^#####[[:space:]]PREFIX[[:space:]]#####$ ]]; then if [[ "$line" =~ ^#####[[:space:]]PREFIX[[:space:]]#####$ ]] ; then
in_prefix_section=true in_prefix_section=true
continue continue
elif [[ "$line" =~ ^#####.* ]]; then elif [[ "$line" =~ ^#####.* ]] ; then
if [[ "$in_prefix_section" == true ]] && [[ -n "$current_description" ]]; then
descriptions+=("$(echo -e "$current_description" | sed 's/\\n$//')")
current_description=""
fi
in_prefix_section=false in_prefix_section=false
fi fi
if [[ "$in_prefix_section" == true ]]; then if [[ "$in_prefix_section" == true ]] ; then
if [[ "$line" =~ ^[a-f0-9]{64} ]]; then if [[ "$line" =~ ^[a-f0-9]{64} ]] ; then
[[ -n "$current_description" ]] && descriptions+=("$(echo -e "$current_description" | sed 's/\\n$//')") # Если у нас есть имя предыдущего префикса, добавляем его описание
if [[ -n "$current_prefix_name" ]] ; then
descriptions+=("$(echo -e "${current_description}" | sed 's/\\n$//')")
fi
current_description="" current_description=""
local filename local filename
filename=$(echo "$line" | awk '{print $2}') filename=$(echo "$line" | awk '{print $2}')
local prefix_name=${filename%.tar.xz} current_prefix_name=${filename%.tar.xz}
if [[ "$arch" == "win32" ]]; then if [[ "$arch" == "win32" ]] && ([[ "$current_prefix_name" == *"_x86_"* ]] || [[ "$current_prefix_name" == *"_i586_"* ]]) ; then
if [[ "$prefix_name" == *"_x86_"* ]] || [[ "$prefix_name" == *"_i586_"* ]]; then options+=("$current_prefix_name")
options+=("$prefix_name") elif [[ "$arch" == "win64" ]] && ([[ "$current_prefix_name" == *"_x64_"* ]] || [[ "$current_prefix_name" == *"_amd64_"* ]]) ; then
options+=("$current_prefix_name")
else
# Если архитектура не совпадает, сбрасываем имя, чтобы не добавлять описание
current_prefix_name=""
fi fi
elif [[ "$arch" == "win64" ]]; then elif [[ "$line" =~ ^#[[:space:]] ]] ; then
if [[ "$prefix_name" == *"_x64_"* ]] || [[ "$prefix_name" == *"_amd64_"* ]]; then
options+=("$prefix_name")
fi
fi
elif [[ "$line" =~ ^#[[:space:]] ]]; then
local comment_line=${line:2} # Удаляем '# ' local comment_line=${line:2} # Удаляем '# '
current_description+="$comment_line\n" current_description+="$comment_line\n"
fi fi
fi fi
done < "$sha256_file" done < "$sha256_file"
# Добавляем описание для самого последнего префикса в файле
if [[ -n "$current_prefix_name" ]] ; then
descriptions+=("$(echo -e "${current_description}" | sed 's/\\n$//')")
fi
echo echo
print_info "Выберите тип создаваемого префикса:" print_info "Выберите тип создаваемого префикса:"
for i in "${!options[@]}"; do for i in "${!options[@]}" ; do
printf "\n\E[36m %s) %s \e[0m\n" "$((i+1))" "${options[$i]}" printf "\n\E[36m %s) %s \e[0m\n" "$((i+1))" "${options[$i]}"
[[ -n "${descriptions[$i]}" ]] && printf " \E[33m%s\e[0m\n" "$(echo -e "${descriptions[$i]}" | sed 's/^/ /g')" [[ -n "${descriptions[$i]}" ]] && printf " \E[33m%s\e[0m\n" "$(echo -e "${descriptions[$i]}" | sed 's/^/ /g')"
done done

View File

@@ -1503,23 +1503,39 @@ class CreatePrefixDialog(QDialog):
continue continue
if re.match(r'^[a-f0-9]{64}', line): if re.match(r'^[a-f0-9]{64}', line):
current_prefix_name = line.split(maxsplit=1)[1].replace('.tar.xz', '') # Если у нас есть имя и описание для предыдущего префикса, добавляем его
if current_prefix_name and current_description:
arch = None arch_for_prev_prefix = None
if "_x86_" in current_prefix_name or "_i586_" in current_prefix_name: if "_x86_" in current_prefix_name or "_i586_" in current_prefix_name:
arch = 'win32' arch_for_prev_prefix = 'win32'
elif "_x64_" in current_prefix_name or "_amd64_" in current_prefix_name: elif "_x64_" in current_prefix_name or "_amd64_" in current_prefix_name:
arch = 'win64' arch_for_prev_prefix = 'win64'
if arch: if arch_for_prev_prefix:
description = current_description.strip().replace('\\n', '\n') if current_description else "Рекомендуемый набор библиотек" description_to_add = current_description.strip().replace('\\n', '\n')
self.prepared_prefixes[arch].append((current_prefix_name, description)) self.prepared_prefixes[arch_for_prev_prefix].append((current_prefix_name, description_to_add))
# Сбрасываем описание для нового префикса
current_description = "" current_description = ""
current_prefix_name = None
# Получаем имя нового префикса
current_prefix_name = line.split(maxsplit=1)[1].replace('.tar.xz', '') if len(line.split(maxsplit=1)) > 1 else None
elif line.startswith('# '): elif line.startswith('# '):
current_description += line[2:] + "\\n" # Накапливаем описание
comment_line = line[2:].strip()
if current_description:
current_description += "\n" + comment_line
else:
current_description = comment_line
# После цикла добавляем описание для самого последнего префикса, если оно есть
if current_prefix_name and current_description:
arch = None
if "_x86_" in current_prefix_name or "_i586_" in current_prefix_name: arch = 'win32'
elif "_x64_" in current_prefix_name or "_amd64_" in current_prefix_name: arch = 'win64'
if arch:
self.prepared_prefixes[arch].append((current_prefix_name, current_description.strip().replace('\\n', '\n')))
except IOError as e: except IOError as e:
QMessageBox.warning(self, "Ошибка", f"Не удалось прочитать файл с описаниями префиксов: {e}") QMessageBox.warning(self, "Ошибка", f"Не удалось прочитать файл с описаниями префиксов: {e}")