summaryrefslogtreecommitdiffstats
path: root/makefu/5pkgs/nsrenamer
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2020-10-03 13:44:30 +0200
committertv <tv@krebsco.de>2020-10-03 13:44:30 +0200
commitd1e52425e0d5d79a33b11c92cc2afb498075d953 (patch)
tree29277982f014eaae680e006b6afc7fdb42e8d9b2 /makefu/5pkgs/nsrenamer
parent654f64f05935a69607a540f2e8d15619cee9e15e (diff)
parent7e7499d86302d261c8f8404fb34f2ac091318d0e (diff)
Merge remote-tracking branch 'prism/master'
Diffstat (limited to 'makefu/5pkgs/nsrenamer')
-rw-r--r--makefu/5pkgs/nsrenamer/default.nix3
-rwxr-xr-xmakefu/5pkgs/nsrenamer/nsrenamer.sh58
2 files changed, 61 insertions, 0 deletions
diff --git a/makefu/5pkgs/nsrenamer/default.nix b/makefu/5pkgs/nsrenamer/default.nix
new file mode 100644
index 000000000..16b9a4f20
--- /dev/null
+++ b/makefu/5pkgs/nsrenamer/default.nix
@@ -0,0 +1,3 @@
+{ pkgs,... }:
+# TODO: dependencies: coreutils, nx_game_info,
+pkgs.writeScriptBin "nsrenamer" (builtins.readFile ./nsrenamer.sh)
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
+