Skip to content

Commit 9404e5d

Browse files
committed
add human option
1 parent ab39a69 commit 9404e5d

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

index_generator/__main__.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def main():
2424
parser.add_argument('--print', '-P', action='store_true', default=False, help='Whether to print to stdout.')
2525
parser.add_argument('--depth', '-d', type=int, default=0, help='Set cutoff depth.')
2626
parser.add_argument('--root', '-r', type=str, default='/', help='Set base root dir.')
27+
parser.add_argument('--human', action='store_true', default=False, help='Make size human readable.')
2728
parser.add_argument('path', type=str, default='', help='Path', nargs='?')
2829
arguments = parser.parse_args()
2930
app(arguments)
@@ -39,19 +40,19 @@ def app(args):
3940
print('See: index-generator --help')
4041
sys.exit(0)
4142
if args.no_recursive:
42-
generate_once(args.template, args.path, os.listdir(args.path), args.name, args.print, base=args.root)
43+
generate_once(args.template, args.path, os.listdir(args.path), args.name, args.print, base=args.root, human=args.human)
4344
else:
44-
generate_recursively(args.template, args.path, args.name, args.print, args.depth, base=args.root)
45+
generate_recursively(args.template, args.path, args.name, args.print, args.depth, base=args.root, human=args.human)
4546

4647

47-
def generate_once(template_dir, root, files, name, if_print, base='/'):
48+
def generate_once(template_dir, root, files, name, if_print, base='/', human=False):
4849
environment = jinja2.Environment(
4950
loader=jinja2.PackageLoader('index_generator', template_dir),
5051
autoescape=jinja2.select_autoescape(['html', 'htm'])
5152
)
5253
template = environment.get_template(name)
5354

54-
entries = list(map(lambda f1: Entry(f1, root, base=base), files))
55+
entries = list(map(lambda f1: Entry(f1, root, base=base, human=human), files))
5556
# entries.sort(key=lambda x: x.isDir, reverse=True)
5657

5758
filelist = []
@@ -83,7 +84,7 @@ def generate_once(template_dir, root, files, name, if_print, base='/'):
8384
print(html, file=f)
8485

8586

86-
def generate_recursively(template_dir, path, name, if_print, max_depth=0, base='/'):
87+
def generate_recursively(template_dir, path, name, if_print, max_depth=0, base='/', human=False):
8788
for root, dirs, files in os.walk(path):
8889
if max_depth != 0 and root.count(os.sep) >= max_depth:
8990
dirs.clear()
@@ -99,7 +100,7 @@ def generate_recursively(template_dir, path, name, if_print, max_depth=0, base='
99100
print('files: {}'.format(files))
100101
print('-----------------------------------------')
101102

102-
generate_once(template_dir, root, dirs+files, name, if_print, base=base)
103+
generate_once(template_dir, root, dirs+files, name, if_print, base=base, human=human)
103104

104105

105106
if __name__ == '__main__':

index_generator/models/entries.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
11
import os
22
import mimetypes
33

4+
def sizeof_fmt(num, suffix='B'):
5+
for unit in ['','Ki','Mi','Gi','Ti','Pi','Ei','Zi']:
6+
if abs(num) < 1024.0:
7+
if suffix == 'B':
8+
return '%3.0f %s%s' % (num, unit, suffix)
9+
else:
10+
return '%3.1f %s%s' % (num, unit, suffix)
11+
num /= 1024.0
12+
return '%.1f %s%s' % (num, 'Yi', suffix)
413

514
class Entry(object):
6-
def __init__(self, file, root, base='/'):
15+
def __init__(self, file, root, base='/', human=False):
716
path = root + os.path.sep + file
817
self.path = base + path.lstrip('.*/')
918
self.name = os.path.basename(path)
1019
self.mime = mimetypes.guess_type(path)[0]
11-
self.size = os.path.getsize(path)
20+
if human:
21+
self.size = sizeof_fmt(os.path.getsize(path))
22+
else:
23+
self.size = os.path.getsize(path)
1224
self.modified = os.path.getmtime(path)
1325
self.isDir = os.path.isdir(path)
26+

0 commit comments

Comments
 (0)