added installed and run commands

This commit is contained in:
Mikhail Tergoev 2025-02-17 17:09:21 +03:00
parent 4de5117841
commit c8ee404c38

@ -351,6 +351,7 @@ var_ld_library_path_update () {
return 0
}
##### CREATE DESKTOP FILE #####
create_desktop () {
local name_desktop="$1"
local exe_file="$2"
@ -382,13 +383,56 @@ create_desktop () {
if [[ "$USE_AI_SCRIPTS" == "1" ]] \
&& [[ -f "$exe_file" ]]
then
grep -e "#!" -e "export" -e "var_" "$WH_AUTOINSTALL_DIR/$AI_SCRIPT" \
{
echo '#!/usr/bin/env bash'
echo "# cmd_name: $AI_SCRIPT"
} > "$exe_file".whdb
grep -e "info_" -e "#####" -e "export" -e "var_" "$WH_AUTOINSTALL_DIR/$AI_SCRIPT" \
| grep -vE "LAUNCH_PARAMETERS|AUTOINSTALL|WIN_FILE_EXEC|echo" \
| awk '{$1=$1;print}' > "$exe_file".ppdb
| awk '{$1=$1;print}' >> "$exe_file".whdb
print_info "Создан файл настроек для $exe_file"
fi
}
##### INSTALLED PROGRAMS #####
check_installed_programs () {
for desktop_file in "$USER_WORK_PATH"/*.desktop ; do
if [[ ! -f "$desktop_file" ]] ; then
print_info "Установленные программы не найдены."
return 1
fi
EXE_PATH="$(grep "Exec" "$desktop_file" | awk -F'"' '{print $4}')"
case "$1" in
check_only)
if [[ -z $2 ]] ; then
print_error "Нет аргумента для проверки файла запуска!"
print_info "Список установленных программ:"
check_installed_programs
exit 1
elif [[ "$EXE_PATH" =~ ${2}$ ]] ; then
export EXE_PATH
return 0
else
fatal "Не найден файл запуска для $2"
fi
;;
*)
if [[ -f "$EXE_PATH.whdb" ]] ; then
WH_INFO_RU="$(grep "info_ru:" "$EXE_PATH.whdb" | awk -F"info_ru: " '{print $2}')"
printf "\E[36m%s $SCRIPT_NAME run $(basename "$EXE_PATH") - $(basename "$desktop_file") %s\e[0m\n"
echo -e "$WH_INFO_RU\n"
fi
;;
esac
done
}
run_installed_programs () {
if check_installed_programs check_only "$1" ; then
/usr/bin/env bash -c "\"$RUN_SCRIPT\" \"$EXE_PATH\"" &
exit 0
fi
}
##### USED WINED3D LIBRARY #####
init_opengl () {
@ -706,24 +750,24 @@ kill_wine () {
init_database () {
if [[ -f "$WIN_FILE_EXEC" ]] ; then
PPDB="$(basename "$WIN_FILE_EXEC" .exe)"
if [[ -f "$WIN_FILE_EXEC".ppdb ]] ; then
PPDB_FILE="$WIN_FILE_EXEC".ppdb
WHDB="$(basename "$WIN_FILE_EXEC" .exe)"
if [[ -f "$WIN_FILE_EXEC".whdb ]] ; then
WHDB_FILE="$WIN_FILE_EXEC".whdb
else
orig_IFS="$IFS"
IFS=$'\n'
WH_FIND_DB_FILE="$(grep -ilw "#$PPDB.exe" "$WH_DB_DIR"/* )"
WH_FIND_DB_FILE="$(grep -ilw "#$WHDB.exe" "$WH_DB_DIR"/* )"
if [[ $(echo "$WH_FIND_DB_FILE" | wc -l) -gt 1 ]] ; then
print_error "Найдено более одного файла настроек: $PPDB.exe"
PPDB_FILE="$(echo "$WH_FIND_DB_FILE" | head -n1)"
print_error "Найдено более одного файла настроек: $WHDB.exe"
WHDB_FILE="$(echo "$WH_FIND_DB_FILE" | head -n1)"
else
PPDB_FILE="$WH_FIND_DB_FILE"
WHDB_FILE="$WH_FIND_DB_FILE"
fi
IFS="$orig_IFS"
fi
if [[ "$PPDB_FILE" ]] ; then
print_info "Используется файл настроек: $PPDB_FILE"
. "$PPDB_FILE"
if [[ "$WHDB_FILE" ]] ; then
print_info "Используется файл настроек: $WHDB_FILE"
. "$WHDB_FILE"
else
print_warning "Файл настроек не найден. Пропускаем."
fi
@ -793,6 +837,8 @@ wh_info () {
Команды:
install|-i [скрипт установки] если без аргументов, то выводит список возможных установочных скриптов
installed|run список установленных программ
run [программа.exe] запуск программы (отладка)
Параметры:
--help показать эту справку и выйти
@ -818,6 +864,8 @@ case "${1,,}" in
winetricks) shift ; update_winetricks ; prepair_wine ; "$WINETRICKS" -q "$@" ;;
desktop) shift ; create_desktop "$@" ; exit 0 ;;
install|-i) shift ; run_autoinstall "$1" ;;
installed) shift ; check_installed_programs "$1" ;;
run|-r) shift ; run_installed_programs "$1" ;;
*)
if [[ -f "$1" ]] ; then
WIN_FILE_EXEC="$(readlink -f "$1")"