aboutsummaryrefslogtreecommitdiff
path: root/files/.config/nnn/plugins/getplugs
diff options
context:
space:
mode:
Diffstat (limited to 'files/.config/nnn/plugins/getplugs')
-rwxr-xr-xfiles/.config/nnn/plugins/getplugs70
1 files changed, 70 insertions, 0 deletions
diff --git a/files/.config/nnn/plugins/getplugs b/files/.config/nnn/plugins/getplugs
new file mode 100755
index 0000000..361a605
--- /dev/null
+++ b/files/.config/nnn/plugins/getplugs
@@ -0,0 +1,70 @@
+#!/usr/bin/env sh
+
+# Description: Update nnn plugins to installed nnn version
+#
+# Shell: POSIX compliant
+# Authors: Arun Prakash Jana, KlzXS
+
+CONFIG_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/
+PLUGIN_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/plugins
+
+merge () {
+ if type nvim >/dev/null 2>&1; then
+ nvim -d "$1" "$2"
+ else
+ vimdiff +0 "$1" "$2"
+ fi
+}
+
+prompt () {
+ printf "%s\n" "Plugin $1 already exists and is different."
+ printf "Keep (k), merge (m), overwrite (o) [default: k]? "
+ read -r operation
+
+ if [ "$operation" = "m" ]; then
+ op="merge"
+ elif [ "$operation" = "o" ]; then
+ op="cp -vRf"
+ else
+ op="true"
+ fi
+}
+
+if [ "$1" = "master" ] ; then
+ VER="master"
+ ARCHIVE_URL=https://github.com/jarun/nnn/archive/master.tar.gz
+elif type nnn >/dev/null 2>&1; then
+ VER=$(nnn -V)
+ ARCHIVE_URL=https://github.com/jarun/nnn/releases/download/v"$VER"/nnn-v"$VER".tar.gz
+else
+ echo "nnn is not installed"
+ exit 1
+fi
+
+# backup any earlier plugins
+if [ -d "$PLUGIN_DIR" ]; then
+ tar -C "$CONFIG_DIR" -czf "$CONFIG_DIR""plugins-$(date '+%Y%m%d%H%M').tar.gz" plugins/
+fi
+
+mkdir -p "$PLUGIN_DIR"
+cd "$CONFIG_DIR" || exit 1
+curl -Ls "$ARCHIVE_URL" -o nnn-"$VER".tar.gz
+tar -zxf nnn-"$VER".tar.gz
+
+cd nnn-"$VER"/plugins || exit 1
+
+# shellcheck disable=SC2044
+# We do not use obnoxious names for plugins
+for f in $(find . -maxdepth 1 \( ! -iname "." ! -iname "*.md" \)); do
+ if [ -f ../../plugins/"$f" ]; then
+ if [ "$(diff --brief "$f" ../../plugins/"$f")" ]; then
+ prompt "$f"
+ $op "$f" ../../plugins/
+ fi
+ else
+ cp -vRf "$f" ../../plugins/
+ fi
+done
+cd ../.. || exit 1
+
+rm -rf nnn-"$VER"/ nnn-"$VER".tar.gz