#!/usr/bin/python3

import re
import os
import argparse

def read_content(file):
    try:
        f=open(file, "r")
        content= f.read()
        f.close()
    except:
        raise
    return content

def header(function, version):
    hdr= "%% %s(3) Version %s | MariaDB Connector/C\n" % (function, version)
    return hdr

def replace_links(content):
  links= list(re.compile(r'\[([^\]]+)\]\(([^)]+)\)').findall(content))
  for l in links:
    search= "[%s()](%s)" % (l[1], l[1])
    replace= "**%s(3)**" % l[1]
    content= content.replace(search, replace)
  return content

parser= argparse.ArgumentParser(prog="create_man.py",
                                description="Create man pages for MariaDB Connector/C")
parser.add_argument('--docs', type=str, metavar='docs', help='Directory of MariaDB Connector/C documentation')
parser.add_argument('--funcs', type=str, metavar='funcs', help='File which contains exported functions.')
parser.add_argument('--version', type=str, metavar='version', help='Connector/C version')
parser.add_argument('--out', type=str, metavar='outputdir', help='Output directory')
parser.add_argument('--warn', type=int, default=0, metavar='warnings', help='Show warnings (off)')
args= parser.parse_args()

if not os.path.isdir(args.out):
  os.mkdir(args.out)

func_list= read_content(args.funcs)
funcs= func_list.split(";")

for function in funcs:

    try:
        content= read_content("%s/%s.md" % (args.docs, function))
        
    except:
        if args.warn > 0:
            print("warning: Function '%s' is not documented yet" % function)
        continue

    f= open("%s/%s.3.md" % (args.out, function), "w")
    f.write(header(function, args.version))
    f.write(replace_links(content))
    f.close()
    ret= os.system("pandoc --standalone --to man %s/%s.3.md -o %s/%s.3" % (args.out, function, args.out, function))
    os.unlink("%s/%s.3.md" % (args.out, function))
