-
-
Save thingsiplay/21f92ab90cfbb75afc49a4624389c462 to your computer and use it in GitHub Desktop.
lpl - Read entries from RetroArch .lpl playlist files in JSON format (powered by jq)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/env bash | |
# lpl - Read entries from RetroArch .lpl playlist files in JSON format | |
# | |
# USAGE | |
# See `lpl -h` | |
# | |
# DEPENDENCIES | |
# getopts - Arguments parser (Bash built-in function) | |
# readlink - Get fullpath from path (standard program) | |
# jq - JSON parser (external program) | |
# DEFAULTS | |
QUERY="path" | |
FILE="$HOME/.config/retroarch/content_history.lpl" | |
INDEX="" | |
# PARSE ARGUMENTS | |
while getopts "hq:f:i:" flag | |
do | |
if [ "$flag" == "h" ] | |
then | |
echo "lpl [-h] [-q QUERY] [-f FILE] [-i INDEX]" | |
echo "" | |
echo "EXAMPLES:" | |
echo " lpl" | |
echo " lpl -q core_path" | |
echo " lpl -f "$HOME/.config/retroarch/playlists/Atari - 2600.lpl" -i 0" | |
echo "" | |
echo "QUERY:" | |
echo " keyname to read values from: 'path', 'label', 'core_path'," \ | |
"'core_name', 'crc32', 'db_name', 'default_core_path'," \ | |
"'default_core_name', defaults to: '$QUERY'" | |
echo "" | |
echo "FILE:" | |
echo " path to RetroArch .lpl playlist file in JSON format," \ | |
"defaults to: '$FILE'" | |
echo "" | |
echo "INDEX:" | |
echo " integer to limit output of entries, 0=first, 1=second," \ | |
"-1=last, an empty value will get all entries," \ | |
"defaults to: '$INDEX'" | |
echo "" | |
echo "2021 Tuncay D." | |
exit 0 | |
fi | |
if [ "$flag" == "q" ] | |
then | |
QUERY="$OPTARG" | |
fi | |
if [ "$flag" == "f" ] | |
then | |
FILE="$OPTARG" | |
fi | |
if [ "$flag" == "i" ] | |
then | |
INDEX="$OPTARG" | |
fi | |
done | |
FILE=$(readlink -f "$FILE") | |
if [ "$QUERY" == "default_core_path" ] | |
then | |
QUERY_EXPANDED=".default_core_path" | |
elif [ "$QUERY" == "default_core_name" ] | |
then | |
QUERY_EXPANDED=".default_core_name" | |
else | |
QUERY_EXPANDED=".items[$INDEX]? | select(.$QUERY != null) | .$QUERY" | |
fi | |
jq --raw-output "$QUERY_EXPANDED" "$FILE" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment