summaryrefslogtreecommitdiff
path: root/bin/kj-setup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/kj-setup.sh')
-rwxr-xr-xbin/kj-setup.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/bin/kj-setup.sh b/bin/kj-setup.sh
new file mode 100755
index 0000000..5058bb5
--- /dev/null
+++ b/bin/kj-setup.sh
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+red='\e[0;31m'
+orange='\e[0;33m'
+green='\e[0;32m'
+none='\e[0m'
+
+cd
+# Check that things are in their right places.
+if [[ ! -f dotfiles/bin/kj-setup.sh ]]; then
+ printf "${red}[FAIL]${none} expected to find myself\n"
+ exit 1
+fi
+
+required_commands=(git basename)
+for command in ${required_commands[@]}; do
+ if ! which "${command}" >/dev/null; then
+ printf "${red}[FAIL]${none} ${command} not installed\n"
+ exit 1
+ fi
+done
+
+cd ~/dotfiles
+git submodule update --init --recursive
+git submodule foreach pull
+
+cd
+# Creates a symlink with target $1 at location $2.
+# Does nothing and prints an error message if $2 exists and is not a symlink.
+create_symlink() {
+ if [[ -e "$2" && ! -h "$2" ]]; then
+ printf "${orange}[SKIPPED]${none} '$2' exists and is not a symlink.\n"
+ return
+ else
+ if ln -sf "$1" "$2"; then
+ printf "${green}[OK]${none} '$2' → '$1'\n"
+ else
+ printf "${red}[WARNING]${none} could not create '$2'\n"
+ fi
+ fi
+ if ! diff "$2" "$(dirname $2)/$1"; then
+ printf "${red}[WARNING]${none} diffs in $2\n"
+ fi
+}
+
+create_symlink dotfiles/gitconfig .gitconfig
+create_symlink dotfiles/taskrc .taskrc
+create_symlink dotfiles/tmux.conf .tmux.conf
+create_symlink dotfiles/spacemacs .spacemacs
+create_symlink /dev/null .vimrc.local
+
+mkdir -p bin
+for binary in dotfiles/bin/*; do
+ binary=$(basename "${binary}")
+ create_symlink "../dotfiles/bin/${binary}" "bin/${binary}"
+done
+
+if [[ "${SHELL}" = *zsh* ]]; then
+ create_symlink dotfiles/zshrc .zshrc
+else
+ printf "${orange}[SKIPPED]${none} shell is not zsh :-(.\n"
+fi
+
+mkdir -p .ssh
+create_symlink ../dotfiles/ssh/config .ssh/config
+
+if which i3 >/dev/null; then
+ mkdir -p .i3
+ create_symlink ../dotfiles/i3/config .i3/config
+ create_symlink dotfiles/i3status.conf .i3status.conf
+ create_symlink dotfiles/i3blocks.conf .i3blocks.conf
+else
+ printf "${orange}[SKIPPED]${none} i3 not installed.\n"
+fi
+
+create_symlink dotfiles/vimrc .vimrc
+if [[ -e .vim/bundle/Vundle.vim ]]; then
+ printf "${orange}[SKIPPED]${none} Vundle.vim already installed\n"
+else
+ success=1
+ mkdir -p .vim/bundle
+ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim \
+ || success=0
+fi
+vim +PluginInstall +qall || success=0
+if [[ "$success" == "1" ]]; then
+ printf "${green}[OK]${none} installed vim plugins\n"
+else
+ printf "${red}[WARNING]${none} failed to install vim plugins\n"
+fi
+
+if which emacs >/dev/null && [[ ! -d .emacs.d ]]; then
+ git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d
+fi