From d87d0672a8e0f3695f168ff1f55028f6fbe4aedf Mon Sep 17 00:00:00 2001 From: David Pfahler Date: Wed, 29 Sep 2021 00:11:50 +0200 Subject: [PATCH] Split the header only if needed (#1060) * Update split.py * Update split.py * Update split.py * Update split.py --- split.py | 68 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/split.py b/split.py index d822f7f104..4d8b307417 100755 --- a/split.py +++ b/split.py @@ -19,29 +19,49 @@ args = args_parser.parse_args() cur_dir = os.path.dirname(sys.argv[0]) -with open(cur_dir + '/httplib.h') as f: - lines = f.readlines() +lib_name = 'httplib' +header_name = '/' + lib_name + '.h' +source_name = '/' + lib_name + '.' + args.extension +# get the input file +in_file = cur_dir + header_name +# get the output file +h_out = args.out + header_name +cc_out = args.out + source_name -python_version = sys.version_info[0] -if python_version < 3: - os.makedirs(args.out) +# if the modification time of the out file is after the in file, +# don't split (as it is already finished) +do_split = True + +if os.path.exists(h_out): + in_time = os.path.getmtime(in_file) + out_time = os.path.getmtime(h_out) + do_split = in_time > out_time + +if do_split: + with open(in_file) as f: + lines = f.readlines() + + python_version = sys.version_info[0] + if python_version < 3: + os.makedirs(args.out) + else: + os.makedirs(args.out, exist_ok=True) + + in_implementation = False + cc_out = args.out + source_name + with open(h_out, 'w') as fh, open(cc_out, 'w') as fc: + fc.write('#include "httplib.h"\n') + fc.write('namespace httplib {\n') + for line in lines: + is_border_line = border in line + if is_border_line: + in_implementation = not in_implementation + elif in_implementation: + fc.write(line.replace('inline ', '')) + else: + fh.write(line) + fc.write('} // namespace httplib\n') + + print("Wrote {} and {}".format(h_out, cc_out)) else: - os.makedirs(args.out, exist_ok=True) - -in_implementation = False -h_out = args.out + '/httplib.h' -cc_out = args.out + '/httplib.' + args.extension -with open(h_out, 'w') as fh, open(cc_out, 'w') as fc: - fc.write('#include "httplib.h"\n') - fc.write('namespace httplib {\n') - for line in lines: - is_border_line = border in line - if is_border_line: - in_implementation = not in_implementation - elif in_implementation: - fc.write(line.replace('inline ', '')) - else: - fh.write(line) - fc.write('} // namespace httplib\n') - -print("Wrote {} and {}".format(h_out, cc_out)) + print("{} and {} are up to date".format(h_out, cc_out))