|
|
@@ -1,39 +1,56 @@
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
-import os, sys
|
|
|
+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__)
|
|
|
|
|
|
-for f in os.listdir('.'):
|
|
|
- if f in [script, '.git']:
|
|
|
- continue
|
|
|
-
|
|
|
- name = '../.' + f
|
|
|
- target = 'dotfiles/' + f
|
|
|
+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 == 17:
|
|
|
+ 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 == 22:
|
|
|
+ if e.errno == errno.EINVAL:
|
|
|
print name, "\033[31;1mexists\033[0m"
|
|
|
else:
|
|
|
- print e
|
|
|
+ raise
|
|
|
else:
|
|
|
- print e
|
|
|
+ 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[32;1m" + vim_swap + "\033[0m"
|
|
|
+ print "Created \033[34;1m" + vim_swap + "\033[0m"
|