Browse Source

support nested dirs

raylu 8 years ago
parent
commit
c946a54957
1 changed files with 16 additions and 11 deletions
  1. 16 11
      setup.py

+ 16 - 11
setup.py

@@ -1,6 +1,8 @@
 #!/usr/bin/env python
 #!/usr/bin/env python
 
 
-import os, sys, errno
+import errno
+import os
+import sys
 
 
 if os.path.dirname(__file__) != '.':
 if os.path.dirname(__file__) != '.':
 	print 'This script must be run from the dotfiles directory.'
 	print 'This script must be run from the dotfiles directory.'
@@ -36,16 +38,19 @@ for f in os.listdir('.'):
 	if f == 'vim' or not os.path.isdir(f):
 	if f == 'vim' or not os.path.isdir(f):
 		link_file(target, name)
 		link_file(target, name)
 	else:
 	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)
+		for dirpath, _, filenames in os.walk(f):
+			try:
+				dirname = '../.' + dirpath
+				os.mkdir(dirname)
+				print 'Created \033[34;1m' + dirname + '\033[0m'
+			except OSError as e:
+				if e.errno == errno.EEXIST:
+					print 'No need to create', dirname
+				else:
+					raise
+			prefix = '../' * (dirpath.count('/') + 1)
+			for f in filenames:
+				link_file(prefix + 'dotfiles/' + dirpath + '/' + f, '../.' + dirpath + '/' + f)
 
 
 vim_swap = '../.vim_swap'
 vim_swap = '../.vim_swap'
 if os.path.exists(vim_swap):
 if os.path.exists(vim_swap):