Compare commits

...

4 commits

3 changed files with 25 additions and 12 deletions

View file

@ -842,7 +842,8 @@
"description": "RetroDECK Framework", "description": "RetroDECK Framework",
"name": "RetroDECK", "name": "RetroDECK",
"url": "https://retrodeck.net/", "url": "https://retrodeck.net/",
"cli-arg": "--version" "cli-arg": "--version",
"logs": "$XDG_CONFIG_HOME/retrodeck/logs/retrodeck.log"
}, },
"retroarch": { "retroarch": {
"description": "Libretro Multi-emulator Frontend", "description": "Libretro Multi-emulator Frontend",
@ -851,6 +852,7 @@
"launch": "retroarch", "launch": "retroarch",
"cli-arg": "--version", "cli-arg": "--version",
"system": "retroarch", "system": "retroarch",
"logs": "$logs_folder/retroarch/retroarch.log",
"properties": [ "properties": [
{ {
"cheevos": true, "cheevos": true,
@ -1045,6 +1047,7 @@
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/",
"system": "flash", "system": "flash",
"launch": "ruffle-rdwrapper.sh", "launch": "ruffle-rdwrapper.sh",
"logs": "$XDG_CACHE_HOME/ruffle/ruffle.log",
"cli-arg": "" "cli-arg": ""
}, },
"melonds": { "melonds": {
@ -1103,6 +1106,7 @@
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/vita3k/vita3k-guide/",
"system": "psvita", "system": "psvita",
"launch": "Vita3K", "launch": "Vita3K",
"logs": "$XDG_CACHE_HOME/Vita3K/vita3k.log",
"cli-arg": "" "cli-arg": ""
}, },
"rpcs3": { "rpcs3": {
@ -1113,6 +1117,7 @@
"launch": "rpcs3", "launch": "rpcs3",
"cli-arg": "--version", "cli-arg": "--version",
"launch-override": "cd $(dirname $game) && rpcs3 $game", "launch-override": "cd $(dirname $game) && rpcs3 $game",
"logs": "$XDG_CACHE_HOME/rpcs3/RPCS3.log",
"properties": [ "properties": [
{ {
"ask_to_exit": true "ask_to_exit": true
@ -1143,6 +1148,7 @@
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/",
"launch": "dolphin-emu-wrapper", "launch": "dolphin-emu-wrapper",
"cli-arg": "--version", "cli-arg": "--version",
"logs": "$XDG_DATA_HOME/dolphin-emu/dolphin.log",
"system": [ "system": [
"gc", "gc",
"wii" "wii"
@ -1163,6 +1169,7 @@
"url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/", "url": "https://retrodeck.readthedocs.io/en/latest/wiki_emulator_guides/dolphin-primehack/dolphin-primehack-guide/",
"launch": "primehack-wrapper", "launch": "primehack-wrapper",
"cli-arg": "--version", "cli-arg": "--version",
"logs": "$XDG_DATA_HOME/primehack/Logs/dolphin.log",
"system": [ "system": [
"wii" "wii"
], ],

View file

@ -44,16 +44,21 @@ steam_sync() {
if (match($0, /<path>([^<]+)<\/path>/, arr)) if (match($0, /<path>([^<]+)<\/path>/, arr))
print arr[1] print arr[1]
}' "$gamelist") }' "$gamelist")
while read -r game; do while read -r game_path; do
if [[ -n "$game" ]]; then # Avoid empty lines created by xmlstarlet local game="${game_path#./}" # Remove leading ./
local game="${game#./}" # Remove leading ./ if [[ -f "$roms_folder/$system/$game" ]]; then # Validate file exists and isn't a stale ES-DE entry for a removed file
if [[ -f "$roms_folder/$system/$game" ]]; then # Validate file exists and isn't a stale ES-DE entry for a removed file # Construct launch options with the rom path in quotes, to handle spaces
# Construct launch options with the rom path in quotes, to handle spaces local game_title=$(awk -v search_path="$game_path" 'BEGIN { RS="</game>"; FS="\n" }
local launchOptions="$launch_command -s $system \"$roms_folder/$system/$game\"" /<path>/ {
jq --arg title "${game%.*}" --arg target "$target" --arg launchOptions "$launchOptions" \ if (match($0, /<path>([^<]+)<\/path>/, path) && path[1] == search_path) {
'. += [{"title": $title, "target": $target, "launchOptions": $launchOptions}]' "${retrodeck_favorites_file}.new" > "${retrodeck_favorites_file}.tmp" \ if (match($0, /<name>([^<]+)<\/name>/, name))
&& mv "${retrodeck_favorites_file}.tmp" "${retrodeck_favorites_file}.new" print name[1]
fi }
}' "$gamelist")
local launchOptions="$launch_command -s $system \"$roms_folder/$system/$game\""
jq --arg title "$game_title" --arg target "$target" --arg launchOptions "$launchOptions" \
'. += [{"title": $title, "target": $target, "launchOptions": $launchOptions}]' "${retrodeck_favorites_file}.new" > "${retrodeck_favorites_file}.tmp" \
&& mv "${retrodeck_favorites_file}.tmp" "${retrodeck_favorites_file}.new"
fi fi
done <<< "$system_favorites" done <<< "$system_favorites"
done done
@ -110,7 +115,7 @@ steam_sync() {
log d "Some new favorites added between syncs, adding new favorited games" log d "Some new favorites added between syncs, adding new favorited games"
# Load added favorites as manifest and run SRM add # Load added favorites as manifest and run SRM add
mv "$retrodeck_added_favorites" "$retrodeck_favorites_file" mv "$retrodeck_added_favorites" "$retrodeck_favorites_file"
steam_sync_add steam_sync_add
fi fi
# Make new favorites manifest the current one # Make new favorites manifest the current one

View file

@ -1309,6 +1309,7 @@ configurator_steam_tools_dialog() {
"Manual Steam Sync" ) "Manual Steam Sync" )
log i "Configurator: opening \"$choice\" menu" log i "Configurator: opening \"$choice\" menu"
configurator_generic_dialog "RetroDeck Configurator - Manual Steam Sync" "RetroDECK will now look for any ES-DE favorites and sync them to Steam, if needed.\n\nIf Steam Sync has been run before and no favorites have been added or removed, you will be returned to the Steam Tools menu.\nIf changes are needed, you will see a progress dialog during the process."
export CONFIGURATOR_GUI="zenity" export CONFIGURATOR_GUI="zenity"
steam_sync steam_sync
configurator_steam_tools_dialog configurator_steam_tools_dialog