summaryrefslogtreecommitdiffstats
path: root/makefu/5pkgs/nsrenamer/nsrenamer.sh
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2020-09-15 20:16:44 +0200
committerlassulus <lassulus@lassul.us>2020-09-15 20:16:44 +0200
commit624deaddd03101890d2974fc9340a26c00051bf3 (patch)
tree32b0f765be65385f092dff92ae09285a29a4845e /makefu/5pkgs/nsrenamer/nsrenamer.sh
parent91b7a2a58490a59d6090870a9db9eca8d11d9ab4 (diff)
parent57e6296ac4ca6b600f9e57b2c347f413096d09ed (diff)
Merge remote-tracking branch 'gum/master' into HEAD
Diffstat (limited to 'makefu/5pkgs/nsrenamer/nsrenamer.sh')
-rwxr-xr-xmakefu/5pkgs/nsrenamer/nsrenamer.sh58
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
+