Compare commits

..

12 Commits

12 changed files with 90 additions and 22 deletions

View File

@ -1,5 +1,8 @@
История изменений: История изменений:
0.4.6:
* добавлено автодопонение команд для bash (bash_completion)
0.4.5: 0.4.5:
* скорректирована проверка синтаксиса скриптов * скорректирована проверка синтаксиса скриптов

View File

@ -0,0 +1,42 @@
# Auto-completion for winhelper
_winehelper_completions() {
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix"
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
case "${prev}" in
winehelper)
COMPREPLY=( $(compgen -W "${opts} ${wine_cmd}" -- "${cur}") )
return 0
;;
--debug)
COMPREPLY=( $(compgen -W "${wine_cmd}" -- "${cur}") )
return 0
;;
install|-i)
local scripts="$(ls -1 /usr/share/winehelper/autoinstall) $(ls -1 /usr/share/winehelper/manualinstall)"
COMPREPLY=( $(compgen -W "list ${scripts}" -- "${cur}") )
return 0
;;
run|installed)
local installed=$(grep -h "Exec=env" ~/.local/share/winehelper/*.desktop 2>/dev/null | awk -F'/' '{print $NF}' | awk -F'"' '{print $1}')
COMPREPLY=( $(compgen -W "${installed}" -- "${cur}") )
return 0
;;
remove-prefix|backup-prefix)
local prefixes=$(ls -1 ~/.local/share/winehelper/prefixes 2>/dev/null)
COMPREPLY=( $(compgen -W "${prefixes}" -- "${cur}") )
return 0
;;
restore-prefix)
return 0
;;
*)
;;
esac
}
complete -F _winehelper_completions winehelper

View File

@ -10,25 +10,16 @@ export WH_WINDOWS_VER="10"
export WINEARCH="win64" export WINEARCH="win64"
# export INSTALL_DLL="" # export INSTALL_DLL=""
prepair_wine
print_info "Загрузка страницы..."
ABC_FILE="${WH_TMP_DIR}/abc_akkord_pos.html"
curl -o "$ABC_FILE" -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" "https://abccenter.ru/download-ru/"
if [[ ! -f "$ABC_FILE" ]] \
|| grep -q "Forbidden" "$ABC_FILE"
then
fatal "Страница сайта не доступна, или превышено количество запросов к странице."
fi
# Возможны точки либо нижнее подчеркивание в URL-адресе # Возможны точки либо нижнее подчеркивание в URL-адресе
VERDATE=$(grep -oP 'akkord_pos_\K\d+[._]\d+[._]\d+[._]\d+_\d+-\d+-\d+' "$ABC_FILE") try_get_page "https://abccenter.ru/download-ru/"
VERDATE=$(read_page | grep -oP 'akkord_pos_\K\d+[._]\d+[._]\d+[._]\d+_\d+-\d+-\d+')
AUTOINSTALL_EXE="${WH_TMP_DIR}/akkord_pos_${VERDATE}.exe" AUTOINSTALL_EXE="${WH_TMP_DIR}/akkord_pos_${VERDATE}.exe"
prepair_wine
if try_download "https://abccenter.ru/wp-content/soft/akkord_pos_${VERDATE}.exe" "${AUTOINSTALL_EXE}" ; then if try_download "https://abccenter.ru/wp-content/soft/akkord_pos_${VERDATE}.exe" "${AUTOINSTALL_EXE}" ; then
wine_run_install "${AUTOINSTALL_EXE}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP- wine_run_install "${AUTOINSTALL_EXE}" /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-
try_remove_file "$AUTOINSTALL_EXE" try_remove_file "$AUTOINSTALL_EXE"
try_remove_file "$ABC_FILE"
WIN_FILE_EXEC="$DRIVE_C/ABC-Soft/AKKORD POS/ABCAKKORD.exe" WIN_FILE_EXEC="$DRIVE_C/ABC-Soft/AKKORD POS/ABCAKKORD.exe"
create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON" create_desktop "$PROG_NAME" "$WIN_FILE_EXEC" "$PROG_ICON"

View File

@ -46,11 +46,11 @@ check_variables () { [[ -z ${!1} ]] && export $1="$2" ;}
if [[ "$1" == "--debug" ]] ; then if [[ "$1" == "--debug" ]] ; then
check_variables WINEDEBUG "+loaddll,+seh" check_variables WINEDEBUG "+loaddll,+seh"
export DXVK_LOG_LEVEL="error" export DXVK_LOG_LEVEL="error"
export VKD3D_DEBUG "error" export VKD3D_DEBUG="error"
export WINE_MONO_TRACE "E:System.NotImplementedException" export WINE_MONO_TRACE="E:System.NotImplementedException"
export VK_LOADER_DEBUG "error" export VK_LOADER_DEBUG="error"
export VKBASALT_LOG_LEVEL "error" export VKBASALT_LOG_LEVEL="error"
export DXVK_NVAPI_LOG_LEVEL "error" export DXVK_NVAPI_LOG_LEVEL="error"
shift shift
else else
check_variables WINEDEBUG "-all" check_variables WINEDEBUG "-all"
@ -83,6 +83,7 @@ WH_IMAGE_PATH="$DATA_PATH/image"
WH_DB_DIR="$DATA_PATH/database" WH_DB_DIR="$DATA_PATH/database"
WH_AUTOINSTALL_DIR="$DATA_PATH/autoinstall" WH_AUTOINSTALL_DIR="$DATA_PATH/autoinstall"
WH_MANUALINSTALL_DIR="$DATA_PATH/manualinstall" WH_MANUALINSTALL_DIR="$DATA_PATH/manualinstall"
WH_TESTINSTALL_DIR="$DATA_PATH/testinstall"
WH_WINETRICKS="$DATA_PATH/winetricks_$WINETRICKS_VERSION" WH_WINETRICKS="$DATA_PATH/winetricks_$WINETRICKS_VERSION"
WH_MENU_DIR="$HOME/.local/share/applications/WineHelper" WH_MENU_DIR="$HOME/.local/share/applications/WineHelper"
@ -240,11 +241,11 @@ unpack () {
print_info "Запуск распаковки архива $1" print_info "Запуск распаковки архива $1"
local command outarg local command outarg
case $1 in case $1 in
*.tar.xz) command="tar -Jxhf" ; outarg="-C " ;; *.tar.xz) command="tar -Jxhf" ; outarg="-C " ;;
*.tar.gz) command="tar -xhzf" ; outarg="-C " ;; *.tar.gz) command="tar -xhzf" ; outarg="-C " ;;
*.tar.zst) command="tar -I zstd -xhf" ; outarg="-C " ;; *.tar.zst) command="tar -I zstd -xhf" ; outarg="-C " ;;
*.tar) command="tar -xhf" ; outarg="-C " ;; *.tar) command="tar -xhf" ; outarg="-C " ;;
*.zip|*.exe) command="7z x -y" ; outarg="-o" ;; *.zip|*.exe|*.rar) command="7z x -y" ; outarg="-o" ;;
esac esac
create_new_dir "$2" create_new_dir "$2"
if $command "$1" ${outarg}"$2" ; then if $command "$1" ${outarg}"$2" ; then
@ -255,6 +256,32 @@ unpack () {
fi fi
} }
try_get_page () {
local url_page="$1"
export OUT_PAGE_TMP="${WH_TMP_DIR}/url_page.tmp"
print_info "Чтение страницы: $url_page"
if ! curl -o "$OUT_PAGE_TMP" -A "Mozilla/5.0 (compatible; Konqueror/2.1.1; X11)" "$url_page" \
|| grep -q "Forbidden" "$OUT_PAGE_TMP"
then
try_remove_file "$OUT_PAGE_TMP"
fatal "Страница сайта $1 не доступна, или превышено количество запросов к странице."
else
return 0
fi
}
read_page () {
if [[ -n $OUT_PAGE_TMP ]] \
&& [[ -f "$OUT_PAGE_TMP" ]]
then
cat "$OUT_PAGE_TMP"
try_remove_file "$OUT_PAGE_TMP"
unset OUT_PAGE_TMP
else
echo "Исользуй try_get_page перед read_page"
fi
}
try_download () { try_download () {
local DOWNLOAD_FILE_URL="${1// /%20}" local DOWNLOAD_FILE_URL="${1// /%20}"
local OUTPUT_FILE="$2" local OUTPUT_FILE="$2"
@ -1208,6 +1235,11 @@ run_autoinstall () {
elif [[ -f "$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]] ; then elif [[ -f "$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]] ; then
INSTALL_SCRIPT="$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME" INSTALL_SCRIPT="$WH_MANUALINSTALL_DIR/$INSTALL_SCRIPT_NAME"
WH_INSTALL_MODE="manual" WH_INSTALL_MODE="manual"
elif [[ -d "$WH_TESTINSTALL_DIR" ]] \
&& [[ -f "$WH_TESTINSTALL_DIR/$INSTALL_SCRIPT_NAME" ]]
then
INSTALL_SCRIPT="$WH_TESTINSTALL_DIR/$INSTALL_SCRIPT_NAME"
WH_INSTALL_MODE="test"
else else
INSTALL_SCRIPT="0" INSTALL_SCRIPT="0"
fi fi