summaryrefslogtreecommitdiffstats
path: root/install.sh
blob: 36c84b66cd4e4049253b3c3039cafd99baa58640 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# THIS IS CURRENTLY EXPERIMENTAL.  REVIEW AND TEST FIRST.  NEVER RUN ON MAIN
# MACHINE WITHOUT A BACKUP OF VIMFILES AND DOTFILES


# Links configuration files to the ones listed here.  Backup and remove your's
# and then run this script while inside repo directory.
# 
# In Windows it has to be run with git-bash.
#  
# Note: This solution is lazy and causes some problems.  Like not being able to
#       track vim pluggins.

# Config
# ======

mode=$1             # copy,slink


# Prepare
# =======

# HOME variable must be available

if [[ -z $XDG_CONFIG_HOME ]]; then
    XDG_CONFIG_HOME="$HOME/.config"
    mkdir -p $XDG_CONFIG_HOME
fi

if [[ $mode = "copy" ]]; then 
    cp_or_ln="cp"
elif [[ $mode = "slink" ]]; then 
    cp_or_ln="ln -s"                # if you are fearless add the `-f` option
else
    echo "Usage: $0 copy|slink"
    exit
fi

VIMFILES="$HOME/.vim"       # In windows it's `%userprofile%/vimfiles/`


# 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"

# 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"

# zathura

mkdir -p $XDG_CONFIG_HOME/zathura
eval $cp_or_ln " ${PWD}/other/zathurarc     $XDG_CONFIG_HOME/zathura/zathurarc"

# tmux

eval $cp_or_ln " ${PWD}/tmux/tmux.conf     $HOME/.tmux.conf"
eval $cp_or_ln " ${PWD}/tmux/tmux.conf.local $HOME/.tmux.conf.local"

# done

echo "all done :)"