3 # Description: Backup nnn configuration
6 # - shell functions and aliases
8 # Shell: POSIX compliant
9 # Author: Léo Villeveygoux
13 outdir="nnn-$(whoami)@$(hostname)"
15 outfile="${outdir}.tar.bz2"
17 shellname="$(basename "$SHELL")"
21 configdir="${XDG_CONFIG_HOME:-$HOME/.config}/nnn"
25 tempdir="$(mktemp -d)"
27 mkdir "$tempdir/$outdir"
29 if [ ! -d "$tempdir" ]; then
30 echo "Can't create work directory." >&2
34 cd "$tempdir/$outdir" || exit 1
36 # Backing up config dir content
37 cp -r "$configdir" . || exit 1
40 env | sed "s/'/'\\\\''/" |\
41 awk '/^NNN_/{print "export '\''"$0"'\''"}' > "$conffile"
43 # Shell functions/aliases
46 for name in $nnn_aliases ; do
47 if [ "$(bash -ic "type -t $name")" = "function" ] ; then
48 bash -ic "type $name" | tail -n+2 >> "$conffile"
49 elif bash -ic "alias $name" >/dev/null 2>&1 ; then
50 bash -ic "alias $name" >> "$conffile"
55 for name in $nnn_aliases ; do
56 if zsh -ic "functions $name" ; then
57 zsh -ic "functions $name" >> "$conffile"
58 elif zsh -ic "alias $name" ; then
59 echo alias "$(zsh -ic "alias $name")" >> "$conffile"
65 echo "Unknown shell, skipping alias/function checking." >&2
71 printf "Saving as '%s' ... " "$workdir/$outfile"
73 tar caf "$workdir/$outfile" "$outdir" && echo "Done" || echo "Failed"
75 cd "$workdir" && rm -rf "$tempdir"