setup.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env python
  2. import os, sys, errno
  3. if os.path.dirname(__file__) != '.':
  4. print 'This script must be run from the dotfiles directory.'
  5. sys.exit(1)
  6. script = os.path.basename(__file__)
  7. def link_file(target, name):
  8. try:
  9. os.symlink(target, name)
  10. print '\033[36;1m' + name + '\033[0m ->', target
  11. except OSError as e:
  12. if e.errno != errno.EEXIST:
  13. raise
  14. try:
  15. if os.readlink(name) == target:
  16. print name, 'is already linked'
  17. else:
  18. print name, '\033[31;1mexists\033[0m (symlink)'
  19. except OSError as e:
  20. if e.errno == errno.EINVAL:
  21. print name, '\033[31;1mexists\033[0m'
  22. else:
  23. raise
  24. for f in os.listdir('.'):
  25. if f in [script, '.git']:
  26. continue
  27. name = '../.' + f
  28. target = 'dotfiles/' + f
  29. # ~/.vim is a special case since we symlink the whole directory
  30. # everywhere else, we create the directory and symlink the contents
  31. if f == 'vim' or not os.path.isdir(f):
  32. link_file(target, name)
  33. else:
  34. try:
  35. os.mkdir(name)
  36. print 'Created \033[34;1m' + name + '\033[0m'
  37. except OSError as e:
  38. if e.errno == errno.EEXIST:
  39. print 'No need to create', name
  40. else:
  41. raise
  42. for f in os.listdir(f):
  43. link_file('../' + target + '/' + f, name + '/' + f)
  44. vim_swap = '../.vim_swap'
  45. if os.path.exists(vim_swap):
  46. print 'No need to create', vim_swap
  47. else:
  48. os.mkdir(vim_swap, 0700)
  49. print 'Created \033[34;1m' + vim_swap + '\033[0m'