def main():
    """The main function of the script"""
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument(
        '--boost_dir',
        required=False,
        type=existing_path,
        help='The path to the include/boost directory of Metaparse'
    )
    parser.add_argument(
        '--max_length_limit',
        required=False,
        default=2048,
        type=positive_integer,
        help='The maximum supported length limit'
    )
    parser.add_argument(
        '--length_limit_step',
        required=False,
        default=128,
        type=positive_integer,
        help='The longest step at which headers are generated'
    )
    args = parser.parse_args()

    if args.boost_dir is None:
        tools_path = os.path.dirname(os.path.abspath(__file__))
        boost_dir = os.path.join(
            os.path.dirname(tools_path),
            'include',
            'boost'
        )
    else:
        boost_dir = args.boost_dir

    if args.max_length_limit < 1:
        sys.stderr.write('Invalid maximum length limit')
        sys.exit(-1)

    generate_string(
        os.path.join(
            boost_dir,
            'metaparse',
            'v{0}'.format(VERSION),
            'cpp11',
            'impl'
        ),
        length_limits(args.max_length_limit, args.length_limit_step)
    )