#!/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 +0 "$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 # 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-master/ master.tar.gz