diff --git a/scripts/pybb.py b/scripts/pybb.py index 76bc44b..43d6a0a 100755 --- a/scripts/pybb.py +++ b/scripts/pybb.py @@ -15,9 +15,10 @@ import os import shutil import subprocess import sys +from typing import List, Optional -def cat(paths: [str]) -> int: +def cat(paths: List[str]) -> int: for path in paths: try: with open(path) as f: @@ -32,23 +33,15 @@ def cat(paths: [str]) -> int: def mkdir(path: str) -> int: if not os.path.exists(path): - try: - os.mkdir(path) - except: - return 1 - return 0 - if os.path.isdir(path): - return 0 - return 1 + os.mkdir(path) # this exists because Windows is utterly incapable of providing a proper rm -rf -def rm(path: str) -> int: +def rm(path: str): if (os.path.exists(path) or os.path.islink(path)) and not os.path.isdir(path): os.remove(path) elif os.path.isdir(path): shutil.rmtree(path) - return 0 def ctest_all() -> int: @@ -66,7 +59,7 @@ def ctest_all() -> int: return 0 -def cmake_build(base_path: str, target: str) -> int: +def cmake_build(base_path: str, target: Optional[str]) -> int: if not os.path.isdir(base_path): # nothing to build return 0 @@ -83,7 +76,11 @@ def cmake_build(base_path: str, target: str) -> int: def conan() -> int: project_name = sys.argv[2] conan_dir = '.conanbuild' - err = mkdir(conan_dir) + err = 0 + try: + mkdir(conan_dir) + except: + return 1 if err != 0: return err args = ['conan', 'install', '../', '--build=missing', '-pr', project_name] @@ -94,10 +91,13 @@ def conan() -> int: return 0 -def main(): +def main() -> int: err = 0 if sys.argv[1] == 'mkdir': - err = mkdir(sys.argv[2]) + try: + mkdir(sys.argv[2]) + except: + err = 1 elif sys.argv[1] == 'rm': for i in range(2, len(sys.argv)): rm(sys.argv[i]) @@ -120,4 +120,4 @@ if __name__ == '__main__': err = main() sys.exit(err) except KeyboardInterrupt: - sys.exit(1) + sys.exit(err) diff --git a/scripts/setup-build.py b/scripts/setup-build.py index 34ab18a..30e9d83 100755 --- a/scripts/setup-build.py +++ b/scripts/setup-build.py @@ -18,7 +18,7 @@ import sys from pybb import mkdir, rm -def main(): +def main() -> int: parser = argparse.ArgumentParser() parser.add_argument('--target', help='Platform target', default='{:s}-{:s}'.format(sys.platform, platform.machine())) @@ -39,7 +39,7 @@ def main(): sanitizer_status = 'OFF' else: print('Error: Invalid build tool') - sys.exit(1) + return 1 if args.build_tool == 'xcode': build_config = '{:s}-{:s}'.format(args.target, args.build_tool) @@ -60,12 +60,11 @@ def main(): build_tool = '-GXcode' else: print('Error: Invalid build tool') - sys.exit(1) + return 1 project_dir = os.getcwd() build_dir = '{:s}/build/{:s}'.format(project_dir, build_config) rm(build_dir) - mkdir(build_dir) cmake_cmd = [ 'cmake', '-S', project_dir, '-B', build_dir, build_tool, '-DCMAKE_EXPORT_COMPILE_COMMANDS=ON', @@ -91,10 +90,11 @@ def main(): rm('compile_commands.json') if platform.system() != 'Windows': os.symlink('build/{:s}/compile_commands.json'.format(build_config), 'compile_commands.json') + return 0 if __name__ == '__main__': try: - main() + sys.exit(main()) except KeyboardInterrupt: sys.exit(1)