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
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/" \;
|