feat(cli): added db tools

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-10-26 10:53:09 +05:00
parent 4d42c8ac4e
commit 4d9e72350e
2 changed files with 58 additions and 6 deletions

View File

@@ -5836,12 +5836,18 @@ Binding a game to a single node reduces memoryaccess latency and limits costl
fi
export PW_WINE_CPU_TOPOLOGY
for dont_touch_var in $DISABLE_EDIT_DB_LIST ; do
rm_from_array "PW_EDIT_DB_LIST" "$dont_touch_var"
done
edit_db_from_gui "${PW_EDIT_DB_LIST[@]}" LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL \
if [[ "${PW_CLI}" != "1" ]] ; then
for dont_touch_var in $DISABLE_EDIT_DB_LIST ; do
rm_from_array "PW_EDIT_DB_LIST" "$dont_touch_var"
done
fi
PW_EDIT_DB_FINAL_LIST=("${PW_EDIT_DB_LIST[@]}" \
LAUNCH_PARAMETERS PW_WINDOWS_VER PW_DLL_INSTALL \
WINEDLLOVERRIDES PW_WINE_CPU_TOPOLOGY PW_MESA_GL_VERSION_OVERRIDE PW_VKD3D_FEATURE_LEVEL \
PW_LOCALE_SELECT PW_MESA_VK_WSI_PRESENT_MODE PW_AMD_VULKAN_USE PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR
PW_LOCALE_SELECT PW_MESA_VK_WSI_PRESENT_MODE PW_AMD_VULKAN_USE PW_CPU_NUMA_NODE_INDEX PW_TASKSET_SLR)
export PW_EDIT_DB_FINAL_LIST
edit_db_from_gui "${PW_EDIT_DB_FINAL_LIST[@]}"
if [[ -z "$MANGOHUD_CONFIG" ]] ; then
MONITOR_HEIGHT="$(echo "$PW_SCREEN_RESOLUTION" | awk -F'x' '{print $2}')"

View File

@@ -393,7 +393,6 @@ if [[ $(basename "${portwine_exe,,}") =~ .ppack$ ]] ; then
fi
### CLI ###
get_wine_and_pfx () {
[[ -n $1 ]] && export PW_WINE_USE="$1"
[[ -n $2 ]] && export PW_PREFIX_NAME="$2"
@@ -457,6 +456,53 @@ $(echo $files_from_autoinstall | awk '{for (i = 1; i <= NF; i++) {if (i % 10 ==
edit_db_from_gui $keys_all
exit 0
;;
--list-db)
export pw_yad=""
gui_edit_db
pw_skip_get_info
declare -A NODE_MAP
INDEX=0
while read -r line; do
NODE_MAP[$INDEX]="$line"
((INDEX++))
done < <(lscpu | grep -Po "NUMA node\d+ CPU\(s\):\s+\K.*" 2>/dev/null || true)
for i in "${!NODE_MAP[@]}"; do
echo "NUMA_NODE_${i}=${NODE_MAP[$i]}"
done
echo "IS_AMD=$([[ $(check_vendor_gpu) == \"amd\" ]] && echo true || echo false)"
echo "LOGICAL_CORE_OPTIONS=$GET_LOGICAL_CORE"
[[ -n "$LOCALE_LIST" ]] && echo "LOCALE_LIST=$LOCALE_LIST"
[[ -n "$AMD_VULKAN_DRIVER_LIST" ]] && echo "AMD_VULKAN_DRIVER_LIST=$AMD_VULKAN_DRIVER_LIST"
for var in "${PW_EDIT_DB_FINAL_LIST[@]}"; do
if echo "$DISABLE_EDIT_DB_LIST" | grep -qw "$var"; then
echo "$var blocked"
else
echo "$var"
fi
done
exit 0
;;
--show-ppdb)
# --show-ppdb /полный/путь/до/файла.exe
ppdb_path="$2"
if [[ "$ppdb_path" == *.exe ]]; then
ppdb_path="${ppdb_path}.ppdb"
fi
if [[ ! -f "$ppdb_path" ]]; then
echo "PPDB file not found: $ppdb_path"
exit 1
fi
grep -E '^export ' "$ppdb_path" | sed '/^[[:space:]]*$/d' | while IFS='=' read -r var val; do
[[ -z "$var" ]] && continue
var_name=$(echo "$var" | sed 's/^export[[:space:]]*//')
val_clean=$(echo "$val" | sed 's/^"//; s/"$//')
echo "${var_name}=${val_clean}"
done
exit 0
;;
--backup-prefix)
# portproton --backup-prefix <PREFIX_NAME> <BACKUP_DIR>
pw_create_prefix_backup "$2" "$3"