view docs/test2rst.py @ 1597:7876ed4fceb7

evolve: write our own custom evolvestate file Since for ever, we were using 'graftstate' to record the node currently being evolve and allow 'hg evolve --continue' we now move to our on 'evolvestate' file. This remove and issue with 'hg summary' listing interrupted evolve as graft. This also open the way for storing more data into that file and allow proper --abort and --continue of the whole evolve operation (and not just the last one). The whole thing is very hacky but at least there is some progress. Thanks goes to Shusen Liu for initiating this work.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 04 Feb 2016 01:19:14 +0000
parents a0327c78a5d3
children 94fe2cc9cd41
line wrap: on
line source

#!/usr/bin/env python

import os, os.path as op, re, sys

# line starts with two chars one of which is not a space (and both are not
# newlines obviously) and ends with one or more newlines followed by two spaces
# on a next line (indented text)
CODEBLOCK = re.compile(r'()\n(([^ \n][^\n]|[^\n][^ \n])[^\n]*)\n+  ')

INDEX = '''
Mercurial tests
===============

.. toctree::
   :maxdepth: 1
'''


def rstify(orig, name):
    header = '%s\n%s\n\n' % (name, '=' * len(name))
    content = header + orig
    content = CODEBLOCK.sub(r'\n\1\n\n::\n\n  ', content)
    return content


def main(base):
    if os.path.isdir(base):
        one_dir(base)
    else:
        one_file(base)


def one_dir(base):
    index = INDEX
    #doc = lambda x: op.join(op.dirname(__file__), 'docs', x)

    for fn in sorted(os.listdir(base)):
        if not fn.endswith('.t'):
            continue
        name = os.path.splitext(fn)[0]
        content = one_file(op.join(base, fn))
        target = op.join(base, name + '.rst')
        #with file(doc(name + '.rst'), 'w') as f:
        with file(target, 'w') as f:
            f.write(content)

        index += '\n   ' + name

    #with file(doc('index.rst'), 'w') as f:
    #    f.write(index)


def one_file(path):
    name = os.path.basename(path)[:-2]
    return rstify(file(path).read(), name)


if __name__ == '__main__':
    if len(sys.argv) != 2:
        print 'Please supply a path to tests dir as parameter'
        sys.exit()
    main(sys.argv[1])