#!/usr/bin/env python3

import os


def genapi():
    os.system('rm -rf api')
    os.system('mkdir api')
    os.chdir('api')
    for root, dirs, files in os.walk('../../../woob/'):
        root = root.split('/', 4)[-1]
        if root.startswith('applications') or root.startswith('__'):
            continue

        if root.strip():
            os.system('mkdir -p %s' % root)
            module = '.'.join(['woob'] + root.split('/'))
        else:
            module = 'woob'

        subs = set()
        for f in files:
            if '.' not in f:
                continue

            f, ext = f.rsplit('.', 1)
            if ext != 'py' or f == '__init__':
                continue

            subs.add(f)
            with open(os.path.join(root, '%s.rst' % f), 'w') as fp:
                fmod = '.'.join([module, f])
                fp.write(""":mod:`%(module)s`
======%(equals)s=

.. automodule:: %(module)s
   :show-inheritance:
   :members:
   :undoc-members:""" % {'module': fmod,
                         'equals': '=' * len(fmod)})

        for d in dirs:
            if not root and d == "applications":
                continue
            subs.add('%s/index' % d)

        with open(os.path.join(root, 'index.rst'), 'w') as fp:
            if module == 'woob':
                m = 'API'
            else:
                m = ':mod:`%s`' % module
            fp.write("""%s
%s

Contents:

.. toctree::
   :maxdepth: 3

   %s""" % (m, '=' * len(m), '\n   '.join(sorted(subs))))


if __name__ == '__main__':
    genapi()
