My build of nnn with minor changes
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #!/usr/bin/env sh
-
- # Description: Backup nnn configuration
- # - config dir content
- # - environment config
- # - shell functions and aliases
- #
- # Shell: POSIX compliant
- # Author: Léo Villeveygoux
-
- nnn_aliases="n nnn"
-
- outdir="nnn-$(whoami)@$(hostname)"
-
- outfile="${outdir}.tar.bz2"
-
- shellname="$(basename "$SHELL")"
-
- conffile="config.txt"
-
- configdir="${XDG_CONFIG_HOME:-$HOME/.config}/nnn"
-
- workdir="$PWD"
-
- tempdir="$(mktemp -d)"
-
- mkdir "$tempdir/$outdir"
-
- if [ ! -d "$tempdir" ]; then
- echo "Can't create work directory." >&2
- exit 1
- fi
-
- cd "$tempdir/$outdir" || exit 1
-
- # Backing up config dir content
- cp -r "$configdir" . || exit 1
-
- # Environment config
- env | sed "s/'/'\\\\''/" |\
- awk '/^NNN_/{print "export '\''"$0"'\''"}' > "$conffile"
-
- # Shell functions/aliases
- case "$shellname" in
- bash)
- for name in $nnn_aliases ; do
- if [ "$(bash -ic "type -t $name")" = "function" ] ; then
- bash -ic "type $name" | tail -n+2 >> "$conffile"
- elif bash -ic "alias $name" >/dev/null 2>&1 ; then
- bash -ic "alias $name" >> "$conffile"
- fi
- done
- ;;
- zsh)
- for name in $nnn_aliases ; do
- if zsh -ic "functions $name" ; then
- zsh -ic "functions $name" >> "$conffile"
- elif zsh -ic "alias $name" ; then
- echo alias "$(zsh -ic "alias $name")" >> "$conffile"
- fi
- done
- ;;
-
- *)
- echo "Unknown shell, skipping alias/function checking." >&2
- ;;
- esac
-
- cd .. || exit 1
-
- printf "Saving as '%s' ... " "$workdir/$outfile"
-
- tar caf "$workdir/$outfile" "$outdir" && echo "Done" || echo "Failed"
-
- cd "$workdir" && rm -rf "$tempdir"
|