From 615bcdd95b28a9cd2239340e40c07b431e66d929 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Wed, 9 Jul 2025 12:44:13 +0600 Subject: [PATCH] speeding up the output of the install list --- winehelper | 42 ++++++++++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/winehelper b/winehelper index ac3c374..9c302c7 100755 --- a/winehelper +++ b/winehelper @@ -1281,21 +1281,35 @@ run_autoinstall () { export INSTALL_SCRIPT INSTALL_MODE if [[ $INSTALL_SCRIPT_NAME == "list" ]] || [[ -z "$INSTALL_SCRIPT_NAME" ]] ; then - print_info "Список программ с возможностью автоматической установки:" - for list in $(ls "$WH_AUTOINSTALL_DIR") ; do - AI_INFO="$(grep "info_ru:" "$WH_AUTOINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')" - AI_PROGNAME="$(grep "PROG_NAME=" "$WH_AUTOINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}')" - echo -e "\n$list - $AI_PROGNAME" - echo "$AI_INFO" - done + + list_install_scripts() { + local dir="$1" + local title="$2" + [[ ! -d "$dir" ]] || [[ -z "$(ls -A "$dir" 2>/dev/null)" ]] && return + + print_info "$title" + + awk ' + FNR==1 { + if (progname) { + printf "\n%s - %s\n%s\n", filename, progname, info + } + progname=""; info=""; filename=FILENAME + sub(".*/", "", filename) + } + /info_ru:/ { sub(/.*info_ru: /, ""); info=$0 } + /PROG_NAME=/ { sub(/.*PROG_NAME=/, ""); progname=$0 } + END { + if (progname) { + printf "\n%s - %s\n%s\n", filename, progname, info + } + } + ' "$dir"/* + } + + list_install_scripts "$WH_AUTOINSTALL_DIR" "Список программ с возможностью автоматической установки:" echo - print_info "Список программ с возможностью установки из существующего дистрибутива:" - for list in $(ls "$WH_MANUALINSTALL_DIR") ; do - AI_INFO="$(grep "info_ru:" "$WH_MANUALINSTALL_DIR/$list" | awk -F"info_ru: " '{print $2}')" - AI_PROGNAME="$(grep "PROG_NAME=" "$WH_MANUALINSTALL_DIR/$list" | awk -F"PROG_NAME=" '{print $2}')" - echo -e "\n$list - $AI_PROGNAME" - echo "$AI_INFO" - done + list_install_scripts "$WH_MANUALINSTALL_DIR" "Список программ с возможностью установки из существующего дистрибутива:" elif [[ "$INSTALL_SCRIPT" != "0" ]] ; then source "$INSTALL_SCRIPT" "$@" print_info "Завершена установка $INSTALL_SCRIPT_NAME"