- #!/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 () {
- echo "Plugin $1 already exists and is different."
- echo -n "Keep (k), merge (m), overwrite (o) [default: k]? "
- read 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
- curl -Ls -O https://github.com/jarun/nnn/archive/master.tar.gz
- tar -zxf master.tar.gz
-
- cd nnn-master/plugins
- 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 ../..
-
- $sucmd mv -vf nnn-master/misc/nlaunch/nlaunch /usr/local/bin/
- rm -rf nnn-master/ master.tar.gz $PLUGIN_DIR/README.md
|