diff --git a/auto-gen.py b/auto-gen.py index bff46390..ec88683f 100755 --- a/auto-gen.py +++ b/auto-gen.py @@ -4,8 +4,9 @@ import os.path from os import listdir, rename, mkdir -from sys import exit +from sys import exit as sys_exit from json import loads as json_loads +from json.decoder import JSONDecodeError from pathlib import Path from itertools import islice @@ -91,7 +92,7 @@ tmp_f.write(content) tmp_f.close() if not os.path.isdir(project_dir + '/' + item + '/examples'): - os.mkdir(project_dir + '/' + item + '/examples') + mkdir(project_dir + '/' + item + '/examples') tmp_f = open(project_dir + '/' + item + '/examples/.gitkeep', 'w') tmp_f.write('') tmp_f.close() @@ -112,15 +113,18 @@ pass except KeyError: pass - except: + except JSONDecodeError: print(f'Error: invalid json data in {item}/info.json. ignored...') exit_code = 1 - if creator_title != None: - if creator_link != None: - readme_content += '- [' + item + '](/' + item + ') - Added By [' + creator_title + '](' + creator_link + ')\n' + if creator_title is not None: + if creator_link is not None: + readme_content += f'- [{item}](/{item}) - Added By'\ + f' '\ + f'[' + creator_title + '](' + creator_link + ')\n' else: - readme_content += '- [' + item + '](/' + item + ') - Added By ' + creator_title + '\n' + readme_content += f'- [{item}](/{item}) - Added By {creator_title}\n' else: readme_content += '- [' + item + '](/' + item + ')\n' readme_content += '\n' @@ -140,21 +144,22 @@ def tree(dir_path: Path, level: int=-1, limit_to_directories: bool=False, directories = 0 def inner(dir_path: Path, prefix: str='', level=-1): nonlocal files, directories - if not level: + if not level: return # 0, stop iterating if limit_to_directories: contents = [d for d in dir_path.iterdir() if d.is_dir()] else: contents = list(dir_path.iterdir()) # remove that items starts with `.` - contents = [item for item in contents if not str(item).replace('\\', '/').split('/')[-1].startswith('.')] + contents = [item for item in contents\ + if not str(item).replace('\\', '/').split('/')[-1].startswith('.')] contents.sort() pointers = [tee] * (len(contents) - 1) + [last] for pointer, path in zip(pointers, contents): if path.is_dir(): yield prefix + pointer + path.name directories += 1 - extension = branch if pointer == tee else space + extension = branch if pointer == tee else space yield from inner(path, prefix=prefix+extension, level=level-1) elif not limit_to_directories: yield prefix + pointer + path.name @@ -168,9 +173,9 @@ def inner(dir_path: Path, prefix: str='', level=-1): out += f'\n{directories} directories' + (f', {files} files' if files else '') + '\n' # replace the first line with `.` out = '.\n' + out.split('\n', 1)[-1] - f = open(project_dir + '/tree.txt', 'w') - f.write(out) - f.close() + tree_f = open(project_dir + '/tree.txt', 'w') + tree_f.write(out) + tree_f.close() tree(project_dir) @@ -179,4 +184,4 @@ def inner(dir_path: Path, prefix: str='', level=-1): if exit_code != 0: print("Warning: some of info.json files are not valid. Process will be exited with 1 exit code") -exit(exit_code) +sys_exit(exit_code)