You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.1 KiB
Bash

#!/bin/bash
final_dir="${HOME}/Downloads/switch/game-dumps/final"
nsp_dir=$1
if [[ $nsp_dir == '' ]]; then
nsp_dir="."
fi
function combine_nsp_parts {
big_nsp_dir=$1
echo "Multipart NSP found, combining ${big_nsp_dir}"
declare -i total_size=0
for fname in "$big_nsp_dir/"*
do
current_file_size=$(stat -c%s "$fname")
let total_size=$total_size+$current_file_size
done
mv "$big_nsp_dir" "${big_nsp_dir}.d"
cat "./${big_nsp_dir}.d"/* | pv -epts ${total_size} > "${nsp_dir}${big_nsp_dir}"
echo "Done."
}
export -f combine_nsp_parts
echo "Checking for multipart nsps."
find "$nsp_dir" -name "*.nsp" -type d -exec bash -c 'combine_nsp_parts "$0"' {} \;
echo "Renaming nsps."
# TODO: Try and make this less clunky and directory independent.
find "$nsp_dir" -name "*.nsp" -exec rename '(' '[' {} \;
find "$nsp_dir" -name "*.nsp" -exec rename ')' ']' {} \;
echo "Compressing and moving nsps."
mkdir -p "$final_dir"
find "$nsp_dir" -name "*.nsp" -exec nsz -Cp {} +
# TODO: Try and make this less clunky and directory independent.
find "$nsp_dir" -name "*.nsz" -exec mv {} "$final_dir/" \;