| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/usr/bin/env python
- import os, sys, errno
- if os.path.dirname(__file__) != '.':
- print "This script must be run from the dotfiles directory."
- sys.exit(1)
- script = os.path.basename(__file__)
- def link_file(target, name):
- try:
- os.symlink(target, name)
- print "\033[36;1m" + name + "\033[0m ->", target
- except OSError as e:
- if e.errno == errno.EEXIST:
- try:
- if os.readlink(name) == target:
- print name, "is already linked"
- else:
- print name, "\033[31;1mexists\033[0m (symlink)"
- except OSError as e:
- if e.errno == errno.EINVAL:
- print name, "\033[31;1mexists\033[0m"
- else:
- raise
- else:
- raise
- for f in os.listdir('.'):
- if f in [script, '.git']:
- continue
- name = '../.' + f
- target = 'dotfiles/' + f
- # ~.vim is a special case since we symlink the whole directory
- # everywhere else, we create the directory and symlink the contents
- if f == 'vim' or not os.path.isdir(f):
- link_file(target, name)
- else:
- try:
- os.mkdir(name)
- print "Created \033[34;1m" + name + "\033[0m"
- except OSError as e:
- if e.errno == errno.EEXIST:
- print 'No need to create', name
- else:
- raise
- for f in os.listdir(f):
- link_file('../' + target + '/' + f, name + '/' + f)
- vim_swap = '../.vim_swap'
- if os.path.exists(vim_swap):
- print "No need to create", vim_swap
- else:
- os.mkdir(vim_swap, 0700)
- print "Created \033[34;1m" + vim_swap + "\033[0m"
|