diff options
author | lassulus <lassulus@lassul.us> | 2020-09-15 20:16:44 +0200 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2020-09-15 20:16:44 +0200 |
commit | 624deaddd03101890d2974fc9340a26c00051bf3 (patch) | |
tree | 32b0f765be65385f092dff92ae09285a29a4845e /makefu/5pkgs/nsrenamer/nsrenamer.sh | |
parent | 91b7a2a58490a59d6090870a9db9eca8d11d9ab4 (diff) | |
parent | 57e6296ac4ca6b600f9e57b2c347f413096d09ed (diff) |
Merge remote-tracking branch 'gum/master' into HEAD
Diffstat (limited to 'makefu/5pkgs/nsrenamer/nsrenamer.sh')
-rwxr-xr-x | makefu/5pkgs/nsrenamer/nsrenamer.sh | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/makefu/5pkgs/nsrenamer/nsrenamer.sh b/makefu/5pkgs/nsrenamer/nsrenamer.sh new file mode 100755 index 000000000..16aec3113 --- /dev/null +++ b/makefu/5pkgs/nsrenamer/nsrenamer.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +set -euf +indir=$(dirname "$1") +inname=$(basename "$1") +out=$(nxgameinfo_cli "$1") +ext=${1##*.} +id=$(awk -F: '/├ Title ID:/{print $2}' <<<"$out" |xargs) +baseid=$(awk -F: '/Base Title ID:/{print $2}' <<<"$out" |xargs) +version=$(awk -F: '/├ Version:/{print $2}' <<<"$out" |xargs) +name=$(awk -F: '/Title Name/{print $2}' <<<"$out" | sed "s/[:']//g" | xargs ) +type=$(awk -F: '/Type:/{print $2}' <<<"$out" | xargs) + +! test -n "$id" && echo "Title ID cannot be empty!" && exit 1 +! test -n "$type" && echo "type cannot be empty!" && exit 1 + +if test "$type" == Base;then + ! test -n "$name" && echo "Title Name cannot be empty!" && exit 1 + NAME="$name [$id][v$version].$ext" +elif test "$type" == Update;then + ! test -n "$name" && echo "Title Name cannot be empty!" && exit 1 + ! test -n "$version" && echo "Version cannot be empty!" && exit 1 + NAME="$name [UPD][$id][v$version].$ext" +elif test "$type" == DLC;then + dlcname=$(jq -r --arg id "$id" '.[$id].name' < ~/.switch/titles.US.en.json | sed "s/[:']//g") + if test -n "$dlcname" ;then + NAME="$dlcname [DLC][$id][v$version].$ext" + else + ! test -n "$name" && echo "dlcname cannot be found in titles.US.en.json and $name is empty!" && exit 1 + NAME="$dlcname [DLC][$id][v$version].$ext" + fi +else + echo "unknown type '$type'" + exit 1 +fi +newname=$indir/$NAME + +if test "$NAME" == "${inname}";then + echo "name didn't change,doing nothing" + exit 0 +fi +if test -e "$newname" ;then + echo "'$NAME' already exists, will not override" + exit 1 +fi + +if test -n "${FORCE:-}" ;then + CONFIRM=y +else + read -p "rename '$inname' to '$NAME' - [y/N]" CONFIRM +fi + +if test -n "${FORCE:-}" -o "$CONFIRM" == "y" -o "$CONFIRM" == "Y";then + mv -nv "$1" "$newname" +else + echo "bailing out" + exit 1 +fi + |