You've already forked cpp-httplib
							
							
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
"""This script splits httplib.h into .h and .cc parts."""
 | 
						|
 | 
						|
import argparse
 | 
						|
import os
 | 
						|
import sys
 | 
						|
 | 
						|
border = '// ----------------------------------------------------------------------------'
 | 
						|
 | 
						|
args_parser = argparse.ArgumentParser(description=__doc__)
 | 
						|
args_parser.add_argument(
 | 
						|
    "-e", "--extension", help="extension of the implementation file (default: cc)",
 | 
						|
    default="cc"
 | 
						|
)
 | 
						|
args_parser.add_argument(
 | 
						|
    "-o", "--out", help="where to write the files (default: out)", default="out"
 | 
						|
)
 | 
						|
args = args_parser.parse_args()
 | 
						|
 | 
						|
cur_dir = os.path.dirname(sys.argv[0])
 | 
						|
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
 | 
						|
 | 
						|
# 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:
 | 
						|
    print("{} and {} are up to date".format(h_out, cc_out))
 |