#!/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])
with open(cur_dir + '/httplib.h') 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
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))