From d7cc59c3c550f1da0462cfcacc20c706f5863861 Mon Sep 17 00:00:00 2001 From: XargonWan Date: Thu, 6 Feb 2025 13:39:36 +0900 Subject: [PATCH] PRESETS: added fetch_all_presets function --- functions/presets.sh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/functions/presets.sh b/functions/presets.sh index 5deb62fc..fdcbbbb0 100644 --- a/functions/presets.sh +++ b/functions/presets.sh @@ -303,3 +303,39 @@ build_retrodeck_current_presets() { fi done < $rd_conf } + +fetch_all_presets() { + # This function fetches all possible presets from the presets directory + # USAGE: fetch_all_presets [--pretty] + + local presets_dir="$config/retrodeck/presets" + local presets=() + local pretty_presets=() + local pretty_output=false + + if [[ "$1" == "--pretty" ]]; then + pretty_output=true + fi + + for preset_file in "$presets_dir"/*_presets.cfg; do + while IFS= read -r line; do + if [[ $line =~ ^change\^([a-zA-Z0-9_]+)\^ ]]; then + preset="${BASH_REMATCH[1]}" + if [[ ! " ${presets[*]} " =~ " ${preset} " ]]; then + presets+=("$preset") + if $pretty_output; then + pretty_preset_name=${preset//_/ } # Preset name prettification + pretty_preset_name=$(echo $pretty_preset_name | awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))substr($i,2)}}1') # Preset name prettification + pretty_presets+=("$pretty_preset_name") + fi + fi + fi + done < "$preset_file" + done + + if $pretty_output; then + printf "%s\n" "${pretty_presets[@]}" + else + echo "${presets[@]}" + fi +}