RetroArch/retroarch-zip

82 lines
1.8 KiB
Plaintext
Raw Normal View History

2011-03-20 12:40:01 +00:00
#!/bin/sh
2011-03-20 18:46:04 +00:00
###
2012-04-21 21:41:03 +00:00
## Wrapper script that enables loading of compressed roms for RetroArch.
2011-03-20 18:46:04 +00:00
## Author: Themaister
## License: Do whatever you want with it.
#
2011-03-20 12:40:01 +00:00
die()
{
echo "Error: $1"
rm -r "${TMPDIR}"
2011-03-20 12:40:01 +00:00
exit 1
}
if [ -z "$1" ]; then
die "Need at least one argument"
fi
COMP_FILE="$1"
2011-03-20 18:16:22 +00:00
TMPDIR="`mktemp -d`"
2011-03-20 12:40:01 +00:00
shift
extract_zip()
{
2011-03-20 18:16:22 +00:00
which unzip >/dev/null 2>&1 || die "Cannot find unzip"
unzip "$1" -d "${TMPDIR}" >/dev/null 2>&1 || die "Couldn't extract from archive"
2011-03-20 18:16:22 +00:00
}
extract_7z()
{
which 7z >/dev/null 2>&1 || die "Cannot find 7z"
7z x "$1" -o"${TMPDIR}" >/dev/null 2>&1 || die "Couldn't extract from archive"
2011-03-20 12:40:01 +00:00
}
2011-03-20 18:46:04 +00:00
extract_rar()
{
which unrar >/dev/null 2>&1 || die "Cannot find unrar"
unrar x "$1" "${TMPDIR}" >/dev/null 2>&1 || die "Couldn't extract from archive"
2011-03-20 18:46:04 +00:00
}
case "${COMP_FILE}" in
2011-03-20 12:40:01 +00:00
*.zip )
extract_zip "${COMP_FILE}"
2011-03-20 12:40:01 +00:00
EXTENSION=".zip"
;;
2011-03-20 18:16:22 +00:00
*.7z )
extract_7z "${COMP_FILE}"
2011-03-20 18:16:22 +00:00
EXTENSION=".7z"
;;
2011-03-20 18:46:04 +00:00
*.rar )
extract_rar "${COMP_FILE}"
2011-03-20 18:46:04 +00:00
EXTENSION=".rar"
;;
2011-03-20 12:40:01 +00:00
* )
die "Couldn't find valid zipped rom."
;;
esac
# pick the largest non-directory in the root of the unpacked archive
FILENAME="`ls -Sp \"${TMPDIR}\" | grep -v /$ | head -n1`"
if [ -z "${FILENAME}" ]; then
die "Cannot find any files in root of archive"
fi
SAVENAME="`basename \"${COMP_FILE}\" ${EXTENSION}`"
SAVESTATE="`basename \"${COMP_FILE}\" ${EXTENSION}`"
DIRNAME="`dirname \"${COMP_FILE}\"`"
2011-03-20 12:40:01 +00:00
SAVENAME="${SAVENAME}.srm"
SAVESTATE="${SAVESTATE}.state"
2011-03-20 12:40:01 +00:00
EXE="`which retroarch`"
if [ -z "${EXE}" ]; then
2012-04-21 21:41:03 +00:00
die "Cannot find RetroArch in path."
2011-03-20 12:40:01 +00:00
fi
echo "Temp ROM: ${TMPDIR}/${FILENAME}"
2011-05-31 12:29:32 +00:00
echo "Savename: ${DIRNAME}/${SAVENAME}"
echo "Savestate: ${DIRNAME}/${SAVESTATE}"
"${EXE}" "${TMPDIR}/${FILENAME}" -s "${DIRNAME}/${SAVENAME}" -S "${DIRNAME}/${SAVESTATE}" "$@"
rm -r "${TMPDIR}"