forked from CastroFidel/winehelper
added prefix creation
This commit is contained in:
@@ -4,7 +4,7 @@ _winehelper_completions() {
|
||||
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 --changelog changelog"
|
||||
opts="--help --version --debug install installed -r -i remove-all --clear-pfx killall remove-prefix backup-prefix restore-prefix create-prefix --changelog changelog"
|
||||
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
|
||||
|
||||
case "${prev}" in
|
||||
|
@@ -14,6 +14,7 @@ _winehelper() {
|
||||
'remove-all[Удалить WineHelper и все связанные данные]'
|
||||
'--clear-pfx[Очистить префикс \[имя_префикса\]]'
|
||||
'killall[Убить все процессы]'
|
||||
'create-prefix[Создать новый префикс]'
|
||||
'remove-prefix[Удалить префикс и все связанные данные]'
|
||||
'backup-prefix[Создать резерную копию префикса]'
|
||||
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
|
||||
@@ -55,6 +56,8 @@ _winehelper() {
|
||||
remove-prefix|backup-prefix)
|
||||
_get_prefixes
|
||||
;;
|
||||
create-prefix)
|
||||
;;
|
||||
restore-prefix)
|
||||
_files
|
||||
;;
|
||||
|
72
winehelper
72
winehelper
@@ -1465,6 +1465,76 @@ remove_prefix() {
|
||||
fi
|
||||
}
|
||||
|
||||
create_prefix() {
|
||||
print_info "Существующие префиксы:"
|
||||
local prefixes=()
|
||||
for prefix in "$WH_PREFIXES_DIR"/*; do
|
||||
if [[ -d "$prefix" ]] ; then
|
||||
prefixes+=("$(basename "$prefix")")
|
||||
echo " - $(basename "$prefix")"
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ${#prefixes[@]} -eq 0 ]]; then
|
||||
print_info "Нет существующих префиксов."
|
||||
fi
|
||||
echo
|
||||
|
||||
read -p "Введите имя для нового префикса или 0 для отмены (по умолчанию: default): " prefix_name
|
||||
if [[ "$prefix_name" == "0" ]] ; then
|
||||
print_info "Создание префикса отменено."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
prefix_name=${prefix_name:-default}
|
||||
|
||||
if [[ ! "$prefix_name" =~ ^[a-zA-Z0-9_.-]+$ ]] ; then
|
||||
fatal "Имя префикса может содержать только латинские буквы, цифры, точки, дефисы и подчеркивания"
|
||||
fi
|
||||
|
||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||
fatal "Префикс с именем '$prefix_name' уже существует. Создание отменено."
|
||||
fi
|
||||
|
||||
print_info "Создается префикс с именем: \"$prefix_name\""
|
||||
|
||||
print_info "Выберите разрядность префикса:"
|
||||
echo " 0) Отмена создания префикса"
|
||||
echo " 1) 32-bit"
|
||||
echo " 2) 64-bit"
|
||||
echo
|
||||
local arch_choice
|
||||
read -p "Ваш выбор [0-2] (по умолчанию 1): " arch_choice
|
||||
case "${arch_choice:-1}" in
|
||||
0) print_info "Создание префикса отменено." ; exit 0 ;;
|
||||
1) export WINEARCH="win32" ;;
|
||||
2) export WINEARCH="win64" ;;
|
||||
*) fatal "Неверный выбор. Операция отменена." ;;
|
||||
esac
|
||||
|
||||
print_info "Выберите тип создаваемого префикса:"
|
||||
echo " 0) Отмена создания префикса"
|
||||
echo " 1) С рекомендуемыми библиотеками (по умолчанию)"
|
||||
echo " 2) Чистый префикс (без библиотек)"
|
||||
echo
|
||||
local pfx_type_choice
|
||||
read -p "Ваш выбор [0-2] (по умолчанию 1): " pfx_type_choice
|
||||
case "${pfx_type_choice:-1}" in
|
||||
0) print_info "Создание префикса отменено." ; exit 0 ;;
|
||||
1) ;; # Оставляем BASE_PFX пустым, чтобы init_wineprefix использовал значение по умолчанию
|
||||
2) export BASE_PFX="none" ;;
|
||||
*) fatal "Неверный выбор. Операция отменена." ;;
|
||||
esac
|
||||
|
||||
export WINEPREFIX="$WH_PREFIXES_DIR/$prefix_name"
|
||||
|
||||
if ! init_wine_ver || ! init_wineprefix; then
|
||||
fatal "Ошибка инициализации префикса."
|
||||
fi
|
||||
|
||||
print_ok "Префикс '$prefix_name' (${WINEARCH}) успешно создан."
|
||||
}
|
||||
|
||||
remove_winehelper () {
|
||||
local answer
|
||||
if [[ $1 =~ --force|-y ]] ; then
|
||||
@@ -1748,6 +1818,7 @@ wh_info () {
|
||||
installed список установленных программ
|
||||
run [программа] запуск программы (отладка)
|
||||
remove-all удалить WineHelper и все связанные данные
|
||||
create-prefix создать префикс
|
||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||
backup-prefix [имя_префикса] создать резервную копию префикса
|
||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||
@@ -1796,6 +1867,7 @@ case "$arg1" in
|
||||
backup-prefix) backup_prefix "$@" ;;
|
||||
restore-prefix) restore_prefix "$@" ;;
|
||||
remove-all) remove_winehelper "$@" ;;
|
||||
create-prefix) create_prefix "$@" ;;
|
||||
remove-prefix) remove_prefix "$@" ;;
|
||||
create-base-pfx) create_base_pfx "$@" ;;
|
||||
*)
|
||||
|
Reference in New Issue
Block a user