setup.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. try:
  14. if os.readlink(name) == target:
  15. print name, "is already linked"
  16. else:
  17. print name, "\033[31;1mexists\033[0m (symlink)"
  18. except OSError as e:
  19. if e.errno == errno.EINVAL:
  20. print name, "\033[31;1mexists\033[0m"
  21. else:
  22. raise
  23. else:
  24. raise
  25. for f in os.listdir('.'):
  26. if f in [script, '.git']:
  27. continue
  28. name = '../.' + f
  29. target = 'dotfiles/' + f
  30. # ~.vim is a special case since we symlink the whole directory
  31. # everywhere else, we create the directory and symlink the contents
  32. if f == 'vim' or not os.path.isdir(f):
  33. link_file(target, name)
  34. else:
  35. try:
  36. os.mkdir(name)
  37. print "Created \033[34;1m" + name + "\033[0m"
  38. except OSError as e:
  39. if e.errno == errno.EEXIST:
  40. print 'No need to create', name
  41. else:
  42. raise
  43. for f in os.listdir(f):
  44. link_file('../' + target + '/' + f, name + '/' + f)
  45. vim_swap = '../.vim_swap'
  46. if os.path.exists(vim_swap):
  47. print "No need to create", vim_swap
  48. else:
  49. os.mkdir(vim_swap, 0700)
  50. print "Created \033[34;1m" + vim_swap + "\033[0m"