4 from fnmatch import fnmatch
7 parser = argparse.ArgumentParser(description='Generate sitemap')
8 parser.add_argument('-x', '--exclude', action='append',
9 help='exclude directories (pattern)')
10 parser.add_argument('root_dir', help='Root dicrectory')
11 args = parser.parse_args()
14 for pat in args.exclude:
16 if not pat.endswith('/*'):
17 exclude.append(pat + '/*')
19 os.chdir(args.root_dir)
20 fullpath = os.getcwd()
21 fp_len = len(fullpath)
24 current_subtree = tree[1]
27 for dirpath, dirs, files in sorted(os.walk(fullpath)):
29 dirpath = dirpath[fp_len:]
33 if fnmatch(dirpath, pat):
35 parts = dirpath.split('/')
36 level = len(parts) - 2
37 if level < save_level:
38 current_subtree = tree[1]
39 for i in range(level):
40 current_subtree = current_subtree[-1][1]
41 elif level > save_level:
42 assert level - save_level == 1
43 current_subtree = current_subtree[-1][1]
44 #else: # level == save_level:
45 current_subtree.append((parts[-1], []))