mirror of
https://github.com/RetroDECK/RetroDECK.git
synced 2024-11-22 14:05:39 +00:00
Rework CHD compression process
This commit is contained in:
parent
8d81ac9858
commit
96ee4ddc8b
21
functions.sh
21
functions.sh
|
@ -128,34 +128,39 @@ validate_for_chd () {
|
||||||
# Function for validating chd compression candidates, and compresses if validation passes. Supports .cue, .iso and .gdi formats ONLY
|
# Function for validating chd compression candidates, and compresses if validation passes. Supports .cue, .iso and .gdi formats ONLY
|
||||||
# USAGE: validate_for_chd $input_file
|
# USAGE: validate_for_chd $input_file
|
||||||
|
|
||||||
local file=$1
|
local file=$1
|
||||||
|
current_run_log_file="chd_compression_"$(date +"%Y_%m_%d_%I_%M_%p").log""
|
||||||
|
echo "Validating file:" $file > "$logs_folder/$current_run_log_file"
|
||||||
if [[ "$file" == *".cue" ]] || [[ "$file" == *".gdi" ]] || [[ "$file" == *".iso" ]]; then
|
if [[ "$file" == *".cue" ]] || [[ "$file" == *".gdi" ]] || [[ "$file" == *".iso" ]]; then
|
||||||
echo ".cue/.iso/.gdi file detected"
|
echo ".cue/.iso/.gdi file detected" >> $logs_folder/$current_run_log_file
|
||||||
local file_path=$(dirname $(realpath $file))
|
local file_path=$(dirname $(realpath $file))
|
||||||
local file_base_name=$(basename $file)
|
local file_base_name=$(basename $file)
|
||||||
local file_name=${file_base_name%.*}
|
local file_name=${file_base_name%.*}
|
||||||
if [[ "$file" == *".cue" ]]; then # Validate .cue file correctly maps existing .bin file(s)
|
echo "File base path:" $file_path >> "$logs_folder/$current_run_log_file"
|
||||||
|
echo "File base name:" $file_name >> "$logs_folder/$current_run_log_file"
|
||||||
|
if [[ "$file" == *".cue" ]]; then # Validate .cue file
|
||||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" $file)
|
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" $file)
|
||||||
local cue_validated="false"
|
local cue_validated="false"
|
||||||
for line in $cue_bin_files
|
for line in $cue_bin_files
|
||||||
do
|
do
|
||||||
if [[ -f "$file_path/$line" ]]; then
|
if [[ -f "$file_path/$line" ]]; then
|
||||||
|
echo ".bin file found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
|
||||||
cue_validated="true"
|
cue_validated="true"
|
||||||
else
|
else
|
||||||
echo ".bin file NOT found at $file_path/$line"
|
echo ".bin file NOT found at $file_path/$line" >> "$logs_folder/$current_run_log_file"
|
||||||
echo ".cue file could not be validated. Please verify your .cue file contains the correct corresponding .bin file information and retry."
|
echo ".cue file could not be validated. Please verify your .cue file contains the correct corresponding .bin file information and retry." >> "$logs_folder/$current_run_log_file"
|
||||||
cue_validated="false"
|
cue_validated="false"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [[ $cue_validated == "true" ]]; then
|
if [[ $cue_validated == "true" ]]; then
|
||||||
compress_to_chd "$file_path/$file_base_name" "$file_path/$file_name"
|
echo $cue_validated
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
compress_to_chd "$file_path/$file_base_name" "$file_path/$file_name"
|
echo $cue_validated
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "File type not recognized. Supported file types are .cue, .gdi and .iso"
|
echo "File type not recognized. Supported file types are .cue, .gdi and .iso" >> "$logs_folder/$current_run_log_file"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
retrodeck.sh
16
retrodeck.sh
|
@ -17,7 +17,7 @@ Arguments:
|
||||||
-h, --help Print this help
|
-h, --help Print this help
|
||||||
-v, --version Print RetroDECK version
|
-v, --version Print RetroDECK version
|
||||||
--info-msg Print paths and config informations
|
--info-msg Print paths and config informations
|
||||||
--configure Starts the RetroDECK Configurator
|
--configurator Starts the RetroDECK Configurator
|
||||||
--compress <file> Compresses target file to .chd format. Supports .cue, .iso and .gdi formats
|
--compress <file> Compresses target file to .chd format. Supports .cue, .iso and .gdi formats
|
||||||
--reset-emulator <emulator> Reset one or more emulator configs to the default values
|
--reset-emulator <emulator> Reset one or more emulator configs to the default values
|
||||||
--reset-tools Reset the RetroDECK Tools section
|
--reset-tools Reset the RetroDECK Tools section
|
||||||
|
@ -44,16 +44,24 @@ https://retrodeck.net
|
||||||
read -p "RetroDECK will now attempt to compress your selected game. The original game will still exist and will need to be removed manually after the process completes. Press any key to continue..."
|
read -p "RetroDECK will now attempt to compress your selected game. The original game will still exist and will need to be removed manually after the process completes. Press any key to continue..."
|
||||||
if [[ ! -z $2 ]]; then
|
if [[ ! -z $2 ]]; then
|
||||||
if [[ -f $2 ]]; then
|
if [[ -f $2 ]]; then
|
||||||
validate_for_chd $2
|
current_run_log_file="chd_compression_"$(date +"%Y_%m_%d_%I_%M_%p").log""
|
||||||
|
if [[ $(validate_for_chd $2) == "true" ]]; then
|
||||||
|
filename_no_path=$(basename $2)
|
||||||
|
filename_no_extension=${filename_no_path%.*}
|
||||||
|
compress_to_chd $(dirname $(realpath $2))/$(basename $2) $(dirname $(realpath $2))/$filename_no_extension
|
||||||
|
else
|
||||||
|
printf "An error occured during the compression process. Please see the following log entries for details:\n\n"
|
||||||
|
cat $logs_folder/$current_run_log_file
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "File not found, please specify the full path to the file to be compressed."
|
echo "File not found, please specify the full path to the file to be compressed."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "Please use this command format \"--compress <full path to cue/gdi/iso file>\""
|
echo "Please use this command format \"--compress <cue/gdi/iso file to compress>\""
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
--configure*)
|
--configurator*)
|
||||||
sh /var/config/retrodeck/tools/configurator.sh
|
sh /var/config/retrodeck/tools/configurator.sh
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -346,42 +346,16 @@ configurator_options_dialog() {
|
||||||
configurator_compress_single_game_dialog() {
|
configurator_compress_single_game_dialog() {
|
||||||
file_to_compress=$(file_browse "Game to compress")
|
file_to_compress=$(file_browse "Game to compress")
|
||||||
if [[ ! -z $file_to_compress ]]; then
|
if [[ ! -z $file_to_compress ]]; then
|
||||||
if [[ "$file_to_compress" == *".cue" ]] || [[ "$file_to_compress" == *".gdi" ]] || [[ "$file_to_compress" == *".iso" ]]; then
|
if [[ $(validate_for_chd $file_to_compress) == "true" ]]; then
|
||||||
local file_path=$(dirname $(realpath $file_to_compress))
|
|
||||||
local file_base_name=$(basename $file_to_compress)
|
|
||||||
local file_name=${file_base_name%.*}
|
|
||||||
if [[ "$file_to_compress" == *".cue" ]]; then # Validate .cue file correctly maps existing .bin file(s)
|
|
||||||
local cue_bin_files=$(grep -o -P "(?<=FILE \").*(?=\".*$)" $file_to_compress)
|
|
||||||
local cue_validated="false"
|
|
||||||
for line in $cue_bin_files
|
|
||||||
do
|
|
||||||
if [[ -f "$file_path/$line" ]]; then
|
|
||||||
cue_validated="true"
|
|
||||||
else
|
|
||||||
echo ".bin file NOT found at $file_path/$line"
|
|
||||||
echo ".cue file could not be validated. Please verify your .cue file contains the correct corresponding .bin file information and retry."
|
|
||||||
cue_validated="false"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [[ $cue_validated == "true" ]]; then
|
|
||||||
(
|
(
|
||||||
compress_to_chd "$file_path/$file_base_name" "$file_path/$file_name"
|
filename_no_path=$(basename $file_to_compress)
|
||||||
|
filename_no_extension=${filename_no_path%.*}
|
||||||
|
compress_to_chd $(dirname $(realpath $file_to_compress))/$(basename $file_to_compress) $(dirname $(realpath $file_to_compress))/$filename_no_extension
|
||||||
) |
|
) |
|
||||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
||||||
--title "RetroDECK Configurator Utility - Compression in Progress" \
|
--title "RetroDECK Configurator Utility - Compression in Progress" \
|
||||||
--text="Compressing game $file_base_name, please wait."
|
--text="Compressing game $filename_no_path, please wait."
|
||||||
fi
|
|
||||||
else
|
|
||||||
(
|
|
||||||
compress_to_chd "$file_path/$file_base_name" "$file_path/$file_name"
|
|
||||||
) |
|
|
||||||
zenity --icon-name=net.retrodeck.retrodeck --progress --no-cancel --pulsate --auto-close \
|
|
||||||
--window-icon="/app/share/icons/hicolor/scalable/apps/net.retrodeck.retrodeck.svg" \
|
|
||||||
--title "RetroDECK Configurator Utility - Compression in Progress" \
|
|
||||||
--text="Compressing game $file_base_name, please wait."
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
configurator_generic_dialog "File type not recognized. Supported file types are .cue, .gdi and .iso"
|
configurator_generic_dialog "File type not recognized. Supported file types are .cue, .gdi and .iso"
|
||||||
configurator_compress_single_game_dialog
|
configurator_compress_single_game_dialog
|
||||||
|
|
Loading…
Reference in a new issue