summaryrefslogtreecommitdiffstats
path: root/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'install.sh')
-rwxr-xr-xinstall.sh99
1 files changed, 64 insertions, 35 deletions
diff --git a/install.sh b/install.sh
index e2aebea..2d7425a 100755
--- a/install.sh
+++ b/install.sh
@@ -14,6 +14,7 @@
# people usually manage them.
# https://wiki.archlinux.org/title/Dotfiles
+
# Config
# ======
@@ -30,58 +31,86 @@ if [[ -z $XDG_CONFIG_HOME ]]; then
mkdir -p $XDG_CONFIG_HOME
fi
-if [[ $mode = "copy" ]]; then
+if [[ $mode = "--help" ]]; then
+ echo "You might want to first run: $0 echo"
+ echo "Revise the output"
+ echo "And only then run: $0 slink"
+ exit
+elif [[ $mode = "copy" ]]; then
cp_or_ln="cp"
+ echo Why? Custom modifications will be difficult to track.
+ echo Maybe not a good idea. Good bye.
+ exit
elif [[ $mode = "slink" ]]; then
- cp_or_ln="ln -s" # if you are fearless add the `-f` option
+ cp_or_ln="ln -siv" # if you are fearless add the `-f` option
+elif [[ $mode = "echo" ]]; then
+ cp_or_ln="echo ln -siv"
else
- echo "Usage: $0 copy|slink"
+ echo "Usage: $0 copy|slink|echo"
exit
fi
-VIMFILES="$HOME/.vim" # In windows it's `%userprofile%/vimfiles/`
+prompt() {
+ read -p "Install $1 configuration files? [Y/n/e(exit)] " yesno
+ yesno=$(echo $yesno | tr '[:upper:]' '[:lower:]')
+ case $yesno in
+ y | yes | "" )
+ return 0;;
+ e | exit )
+ exit;;
+ * )
+ return 1;;
+ esac
+}
# Install
# =======
-# bash (`eval` concatenates and executes)
-
-eval $cp_or_ln " ${PWD}/bash/profile $HOME/.profile"
-eval $cp_or_ln " ${PWD}/bash/bashrc $HOME/.bashrc"
-eval $cp_or_ln " ${PWD}/bash/bash_aliases $HOME/.bash_aliases"
-eval $cp_or_ln " ${PWD}/bash/inputrc $HOME/.inputrc"
-
-# vim
-
-# `~/.vimrc` takes priority over `~/.vim/vimrc`. Remove the former if it exists
-
-mkdir -p $VIMFILES/{undo,swap,backup,plugins}
-chmod 0700 $VIMFILES/swap # swap files should only be readable by owner
-
-eval $cp_or_ln " ${PWD}/vim/vimrc $VIMFILES/vimrc"
-eval $cp_or_ln " ${PWD}/vim/fun.vim $VIMFILES/fun.vim"
+# FIXME: If $PWD has spaces in it, this might fail.
-# git
-
-[ -d $XDG_CONFIG_HOME/git ] || mkdir -p $XDG_CONFIG_HOME/git
-eval $cp_or_ln " ${PWD}/git/ignore $XDG_CONFIG_HOME/git/ignore"
-eval $cp_or_ln " ${PWD}/git/config $XDG_CONFIG_HOME/git/config"
-eval $cp_or_ln " ${PWD}/git/git-prompt.sh $HOME/.git-prompt.sh"
+# Filewise
+if prompt "bash"; then
+ eval $cp_or_ln " ${PWD}/bash/bash_profile $HOME/.bash_profile"
+ eval $cp_or_ln " ${PWD}/bash/bashrc $HOME/.bashrc"
+ eval $cp_or_ln " ${PWD}/bash/bash_aliases $HOME/.bash_aliases"
+ eval $cp_or_ln " ${PWD}/bash/inputrc $HOME/.inputrc"
+fi
-# zathura
+if prompt "vim"; then
+ # `~/.vimrc` takes priority over `~/.vim/vimrc`. Remove the former if it
+ # exists.
+ #
+ # In windows it's `%userprofile%/vimfiles/`
+
+ VIMFILES="$HOME/.vim"
+ mkdir -p $VIMFILES/{undo,swap,backup,plugins}
+ chmod 0700 $VIMFILES/swap
+
+ eval $cp_or_ln " ${PWD}/vim/vimrc $VIMFILES/vimrc"
+ eval $cp_or_ln " ${PWD}/vim/fun.vim $VIMFILES/fun.vim"
+fi
-mkdir -p $XDG_CONFIG_HOME/zathura
-eval $cp_or_ln " ${PWD}/other/zathurarc $XDG_CONFIG_HOME/zathura/zathurarc"
+# Directorywise
+if prompt "nvim"; then
+ eval $cp_or_ln " ${PWD}/nvim $XDG_CONFIG_HOME/nvim"
+fi
-# tmux
+if prompt "git"; then
+ [ -d $XDG_CONFIG_HOME/git ] || mkdir -p $XDG_CONFIG_HOME/git
+ eval $cp_or_ln " ${PWD}/git/ignore $XDG_CONFIG_HOME/git/ignore"
+ eval $cp_or_ln " ${PWD}/git/config $XDG_CONFIG_HOME/git/config"
+ eval $cp_or_ln " ${PWD}/git/git-prompt.sh $HOME/.git-prompt.sh"
+fi
-eval $cp_or_ln " ${PWD}/tmux/tmux.conf $HOME/.tmux.conf"
-eval $cp_or_ln " ${PWD}/tmux/tmux.conf.local $HOME/.tmux.conf.local"
-# mpd, ncmpc
-# (TODO)
+if prompt "zathura"; then
+ eval $cp_or_ln " ${PWD}/zathura $XDG_CONFIG_HOME/zathura"
+fi
-# done
+if prompt "tmux"; then
+ eval $cp_or_ln " ${PWD}/tmux/tmux.conf $HOME/.tmux.conf"
+ eval $cp_or_ln " ${PWD}/tmux/tmux.conf.local $HOME/.tmux.conf.local"
+fi
echo "all done :)"