forked from CastroFidel/winehelper
added prefix creation
This commit is contained in:
@@ -4,7 +4,7 @@ _winehelper_completions() {
|
|||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
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"
|
wine_cmd="winecfg winereg winefile wineconsole winetricks desktop regedit explorer cmd run"
|
||||||
|
|
||||||
case "${prev}" in
|
case "${prev}" in
|
||||||
|
@@ -14,6 +14,7 @@ _winehelper() {
|
|||||||
'remove-all[Удалить WineHelper и все связанные данные]'
|
'remove-all[Удалить WineHelper и все связанные данные]'
|
||||||
'--clear-pfx[Очистить префикс \[имя_префикса\]]'
|
'--clear-pfx[Очистить префикс \[имя_префикса\]]'
|
||||||
'killall[Убить все процессы]'
|
'killall[Убить все процессы]'
|
||||||
|
'create-prefix[Создать новый префикс]'
|
||||||
'remove-prefix[Удалить префикс и все связанные данные]'
|
'remove-prefix[Удалить префикс и все связанные данные]'
|
||||||
'backup-prefix[Создать резерную копию префикса]'
|
'backup-prefix[Создать резерную копию префикса]'
|
||||||
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
|
'restore-prefix[восстановить префикс из резервной копии "путь/до/whpack"]'
|
||||||
@@ -55,6 +56,8 @@ _winehelper() {
|
|||||||
remove-prefix|backup-prefix)
|
remove-prefix|backup-prefix)
|
||||||
_get_prefixes
|
_get_prefixes
|
||||||
;;
|
;;
|
||||||
|
create-prefix)
|
||||||
|
;;
|
||||||
restore-prefix)
|
restore-prefix)
|
||||||
_files
|
_files
|
||||||
;;
|
;;
|
||||||
|
72
winehelper
72
winehelper
@@ -1465,6 +1465,76 @@ remove_prefix() {
|
|||||||
fi
|
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 () {
|
remove_winehelper () {
|
||||||
local answer
|
local answer
|
||||||
if [[ $1 =~ --force|-y ]] ; then
|
if [[ $1 =~ --force|-y ]] ; then
|
||||||
@@ -1748,6 +1818,7 @@ wh_info () {
|
|||||||
installed список установленных программ
|
installed список установленных программ
|
||||||
run [программа] запуск программы (отладка)
|
run [программа] запуск программы (отладка)
|
||||||
remove-all удалить WineHelper и все связанные данные
|
remove-all удалить WineHelper и все связанные данные
|
||||||
|
create-prefix создать префикс
|
||||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||||
backup-prefix [имя_префикса] создать резервную копию префикса
|
backup-prefix [имя_префикса] создать резервную копию префикса
|
||||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||||
@@ -1796,6 +1867,7 @@ case "$arg1" in
|
|||||||
backup-prefix) backup_prefix "$@" ;;
|
backup-prefix) backup_prefix "$@" ;;
|
||||||
restore-prefix) restore_prefix "$@" ;;
|
restore-prefix) restore_prefix "$@" ;;
|
||||||
remove-all) remove_winehelper "$@" ;;
|
remove-all) remove_winehelper "$@" ;;
|
||||||
|
create-prefix) create_prefix "$@" ;;
|
||||||
remove-prefix) remove_prefix "$@" ;;
|
remove-prefix) remove_prefix "$@" ;;
|
||||||
create-base-pfx) create_base_pfx "$@" ;;
|
create-base-pfx) create_base_pfx "$@" ;;
|
||||||
*)
|
*)
|
||||||
|
Reference in New Issue
Block a user