@@ -23,6 +23,7 @@ def main():
23
23
help = 'Default output filename.' )
24
24
parser .add_argument ('--print' , '-P' , action = 'store_true' , default = False , help = 'Whether to print to stdout.' )
25
25
parser .add_argument ('--depth' , '-d' , type = int , default = 0 , help = 'Set cutoff depth.' )
26
+ parser .add_argument ('--root' , '-r' , type = str , default = '/' , help = 'Set base root dir.' )
26
27
parser .add_argument ('path' , type = str , default = '' , help = 'Path' , nargs = '?' )
27
28
arguments = parser .parse_args ()
28
29
app (arguments )
@@ -38,19 +39,19 @@ def app(args):
38
39
print ('See: index-generator --help' )
39
40
sys .exit (0 )
40
41
if args .no_recursive :
41
- generate_once (args .template , args .path , os .listdir (args .path ), args .name , args .print )
42
+ generate_once (args .template , args .path , os .listdir (args .path ), args .name , args .print , base = args . root )
42
43
else :
43
- generate_recursively (args .template , args .path , args .name , args .print , args .depth )
44
+ generate_recursively (args .template , args .path , args .name , args .print , args .depth , base = args . root )
44
45
45
46
46
- def generate_once (template_dir , root , files , name , if_print ):
47
+ def generate_once (template_dir , root , files , name , if_print , base = '/' ):
47
48
environment = jinja2 .Environment (
48
49
loader = jinja2 .PackageLoader ('index_generator' , template_dir ),
49
50
autoescape = jinja2 .select_autoescape (['html' , 'htm' ])
50
51
)
51
52
template = environment .get_template (name )
52
53
53
- entries = list (map (lambda f1 : Entry (f1 , root ), files ))
54
+ entries = list (map (lambda f1 : Entry (f1 , root , base = base ), files ))
54
55
# entries.sort(key=lambda x: x.isDir, reverse=True)
55
56
56
57
filelist = []
@@ -66,7 +67,7 @@ def generate_once(template_dir, root, files, name, if_print):
66
67
'isDir' : entry .isDir
67
68
})
68
69
html = template .render (ig = {
69
- 'root' : '/' + root .lstrip ('.*/' ),
70
+ 'root' : base + root .lstrip ('.*/' ),
70
71
'files' : filelist ,
71
72
'generator' : {
72
73
'name' : APP_NAME ,
@@ -78,11 +79,11 @@ def generate_once(template_dir, root, files, name, if_print):
78
79
if if_print :
79
80
print (html )
80
81
else :
81
- with open (root + os .path .sep + name , 'w' ) as f :
82
+ with open (root + os .path .sep + name , 'w' ) as f :
82
83
print (html , file = f )
83
84
84
85
85
- def generate_recursively (template_dir , path , name , if_print , max_depth = 0 ):
86
+ def generate_recursively (template_dir , path , name , if_print , max_depth = 0 , base = '/' ):
86
87
for root , dirs , files in os .walk (path ):
87
88
if max_depth != 0 and root .count (os .sep ) >= max_depth :
88
89
dirs .clear ()
@@ -98,7 +99,7 @@ def generate_recursively(template_dir, path, name, if_print, max_depth=0):
98
99
print ('files: {}' .format (files ))
99
100
print ('-----------------------------------------' )
100
101
101
- generate_once (template_dir , root , dirs + files , name , if_print )
102
+ generate_once (template_dir , root , dirs + files , name , if_print , base = base )
102
103
103
104
104
105
if __name__ == '__main__' :
0 commit comments