@@ -16,8 +16,9 @@ def main():
16
16
parser = argparse .ArgumentParser ()
17
17
parser .add_argument ('--version' , '-V' , action = 'store_true' , default = False ,
18
18
help = 'Print version infomation and quit.' )
19
- parser .add_argument ('--template' , '-t' , type = str , default = 'templates/default' ,
20
- help = 'Select template to generate html.' )
19
+ parser .add_argument ('--theme' , '-t' , type = str , default = 'default' , choices = ['default' ],
20
+ help = 'Select builtin theme to generate html.' )
21
+ parser .add_argument ('--template' , '-T' , type = str , default = '' , help = 'Custom template to generate html.' )
21
22
parser .add_argument ('--no-recursive' , action = 'store_true' , default = False , help = 'Do not generate recursively.' )
22
23
parser .add_argument ('--name' , '-n' , type = str , default = 'index.html' ,
23
24
help = 'Default output filename.' )
@@ -41,16 +42,24 @@ def app(args):
41
42
sys .exit (0 )
42
43
if args .no_recursive :
43
44
os .chdir (args .path )
44
- generate_once (args .template , '.' , os .listdir ('.' ), args .name , args .print , base = args .root , human = args .human )
45
+ generate_once (args .theme , '.' , os .listdir ('.' ), args .name , args .print , base = args .root , human = args .human ,
46
+ template = args .template )
45
47
else :
46
- generate_recursively (args .template , args .path , args .name , args .print , args .depth , base = args .root , human = args .human )
48
+ generate_recursively (args .theme , args .path , args .name , args .print , args .depth , base = args .root , human = args .human ,
49
+ template = args .template )
47
50
48
51
49
- def generate_once (template_dir , root , files , name , if_print , base = '/' , human = False ):
50
- environment = jinja2 .Environment (
51
- loader = jinja2 .PackageLoader ('index_generator' , template_dir ),
52
- autoescape = jinja2 .select_autoescape (['html' , 'htm' ])
53
- )
52
+ def generate_once (theme , root , files , name , if_print , base = '/' , human = False , template = '' ):
53
+ if not template :
54
+ environment = jinja2 .Environment (
55
+ loader = jinja2 .PackageLoader ('index_generator' , 'templates/' + theme ),
56
+ autoescape = jinja2 .select_autoescape (['html' , 'htm' ])
57
+ )
58
+ else :
59
+ environment = jinja2 .Environment (
60
+ loader = jinja2 .FileSystemLoader (template ),
61
+ autoescape = jinja2 .select_autoescape (['html' , 'htm' ])
62
+ )
54
63
template = environment .get_template (name )
55
64
56
65
entries = list (map (lambda f1 : Entry (f1 , root , base = base , human = human ), files ))
@@ -61,20 +70,20 @@ def generate_once(template_dir, root, files, name, if_print, base='/', human=Fal
61
70
if entry .name in indexIgnore :
62
71
continue
63
72
filelist .append ({
64
- 'path' : entry .path ,
65
- 'name' : entry .name ,
66
- 'size' : entry .size ,
73
+ 'path' : entry .path ,
74
+ 'name' : entry .name ,
75
+ 'size' : entry .size ,
67
76
'modified' : time .strftime ('%Y-%m-%d %H:%M:%S' , time .localtime (entry .modified )),
68
- 'mime' : entry .mime ,
69
- 'isDir' : entry .isDir
77
+ 'mime' : entry .mime ,
78
+ 'isDir' : entry .isDir
70
79
})
71
80
html = template .render (ig = {
72
81
'root' : base + root .lstrip ('.*/' ),
73
82
'files' : filelist ,
74
83
'generator' : {
75
- 'name' : APP_NAME ,
84
+ 'name' : APP_NAME ,
76
85
'version' : APP_VERSION ,
77
- 'url' : APP_URL
86
+ 'url' : APP_URL
78
87
}
79
88
})
80
89
@@ -85,7 +94,7 @@ def generate_once(template_dir, root, files, name, if_print, base='/', human=Fal
85
94
print (html , file = f )
86
95
87
96
88
- def generate_recursively (template_dir , path , name , if_print , max_depth = 0 , base = '/' , human = False ):
97
+ def generate_recursively (theme , path , name , if_print , max_depth = 0 , base = '/' , human = False , template = '' ):
89
98
os .chdir (path )
90
99
for root , dirs , files in os .walk ('.' ):
91
100
if max_depth != 0 and root .count (os .sep ) >= max_depth :
@@ -97,12 +106,12 @@ def generate_recursively(template_dir, path, name, if_print, max_depth=0, base='
97
106
98
107
if if_print :
99
108
print ('-----------------------------------------' )
100
- print ('Path: ' + root )
109
+ print ('Path: ' + root )
101
110
print ('dirs: {}' .format (dirs ))
102
111
print ('files: {}' .format (files ))
103
112
print ('-----------------------------------------' )
104
113
105
- generate_once (template_dir , root , dirs + files , name , if_print , base = base , human = human )
114
+ generate_once (theme , root , dirs + files , name , if_print , base = base , human = human )
106
115
107
116
108
117
if __name__ == '__main__' :
0 commit comments