#!/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 # is_cmd_exists () { # which "$1" > /dev/null 2>&1 # echo $? # } merge () { if which 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 [ "$(is_cmd_exists sudo)" -eq "0" ]; then # sucmd=sudo # elif [ "$(is_cmd_exists doas)" -eq "0" ]; then # sucmd=doas # else # sucmd=: # noop # fi if which nnn >/dev/null 2>&1; then VER=$(nnn -V) 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 -O https://github.com/jarun/nnn/releases/download/v"$VER"/nnn-v"$VER".tar.gz tar -zxf nnn-v"$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-v"$VER".tar.gz