setupDotfiles.sh 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. #!/bin/bash
  2. REPO=${1:-https://gogs.viktorgrahn.com/viktor/dotfiles.git}
  3. BRANCH=${2:-main}
  4. if [ -d $HOME/.dotfiles ]; then
  5. echo "$HOME/.dotfiles already exists"
  6. exit 1
  7. fi
  8. echo "Cloning ${REPO} to $HOME/.dotfiles"
  9. git clone --bare ${REPO} $HOME/.dotfiles > /tmp/setupDotfiles.log
  10. if (( $? > 0 )); then
  11. echo "Unable to clone ${REPO}"
  12. exit 2
  13. fi
  14. echo "Checkout ${BRANCH} to $HOME"
  15. git --git-dir=${HOME}/.dotfiles --work-tree=${HOME} checkout ${BRANCH} > /tmp/setupDotfiles.log
  16. if (( $? > 0 )); then
  17. if grep "overwritten by checkout" /tmp/setupDotfiles.log >> /dev/null 2>&1; then
  18. echo "Resolving conflicts and moving existing files to ${HOME}/.dotfiles_backup"
  19. for FILE in $(grep -E "^\s+\." /tmp/setupDotfiles.log | awk '{print $1}'); do
  20. echo "Moving ${FILE} to ${HOME}/.dotfiles_backup/${FILE}"
  21. mkdir -p ${HOME}/.dotfiles_backup/$(dirname ${FILE})
  22. mv ${FILE} ${HOME}/.dotfiles_backup/${FILE}
  23. else
  24. echo "Non conflict error at checkout"
  25. exit 3
  26. fi
  27. fi
  28. echo "Adding alias dotfiles"
  29. alias "dotfiles" "git --git-dir=${HOME}/.dotfiles --work-tree=${HOME}"