summaryrefslogtreecommitdiffstats
path: root/makefu
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2020-08-17 00:46:25 +0200
committermakefu <github@syntax-fehler.de>2020-08-17 00:46:25 +0200
commita07a40b018390b5832da6cf201c26ecfd4d1b7b3 (patch)
treec8c9ce530b11b80e747b7bfe119fc77ba38c3e2b /makefu
parent1d78ac0d6a78048903cc159b82ec6b405b7e16ab (diff)
ma pkgs.nsrenamer: init
Diffstat (limited to 'makefu')
-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 00000000..9dbd3ad4
--- /dev/null
+++ b/makefu/5pkgs/nsrenamer/default.nix
@@ -0,0 +1,3 @@
+{ pkgs,... }:
+# TODO: dependencies: coreutils, nx_game_info,
+pkgs.writeScriptBin "nsrenamer" ./nsrenamer.sh
diff --git a/makefu/5pkgs/nsrenamer/nsrenamer.sh b/makefu/5pkgs/nsrenamer/nsrenamer.sh
new file mode 100755
index 00000000..3d60d1ae
--- /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: '/├ Display Version:/{print $2}' <<<$out |xargs)
+name=$(awk -F: '/Title Name/{print $2}' <<<$out |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="[$id] $name Base Game.$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="[$id] $name Update $version.$ext"
+elif test "$type" == DLC;then
+ dlcname=$(jq -r --arg id "$id" '.[$id].name' < ~/.switch/titles.US.en.json)
+ if test -n "$dlcname" ;then
+ NAME="[$id] $dlcname DLC.$ext"
+ else
+ ! test -n "$name" && echo "dlcname cannot be found in titles.US.en.json and $name is empty!" && exit 1
+ NAME="[$id] $name DLC.$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
+