#!/usr/bin/env sh # Description: Update nnn plugins # # Shell: POSIX compliant # Author: 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 () { vimdiff "$1" "$2" } prompt () { printf "%s" "Plugin $1 already exists and is different.\n" 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 # 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/archive/master.tar.gz tar -zxf master.tar.gz cd nnn-master/plugins || exit 1 for f in *; 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 $sucmd mv -vf nnn-master/misc/nlaunch/nlaunch /usr/local/bin/ rm -rf nnn-master/ master.tar.gz "$PLUGIN_DIR"/README.md