Raw File
make_index.py
# -*- coding: utf-8 -*-

"""
Format the readme.md file into the sphinx index.rst file.

"""
from __future__ import absolute_import, division, print_function

import os
import inspect
import re

import pypandoc
from astropy.time import Time


def write_index_rst(readme_file=None, write_file=None):
    t = Time.now()
    t.out_subfmt = "date"
    out = (
        ".. pyuvdata documentation master file, created by\n"
        "   make_index.py on {date}\n\n"
    ).format(date=t.iso)

    if readme_file is None:
        main_path = os.path.dirname(
            os.path.dirname(os.path.abspath(inspect.stack()[0][1]))
        )
        readme_file = os.path.join(main_path, "README.md")

    readme_text = pypandoc.convert_file(readme_file, "rst")

    title_badge_text = (
        "pyuvdata\n========\n\n"
        ".. image:: https://circleci.com/gh/RadioAstronomySoftwareGroup/"
        "pyuvdata.svg?style=svg\n"
        "    :target: https://circleci.com/gh/RadioAstronomySoftwareGroup/pyuvdata\n\n"
        ".. image:: https://github.com/RadioAstronomySoftwareGroup/pyuvdata/"
        "workflows/Run%20Tests/badge.svg?branch=master\n"
        "    :target: https://github.com/RadioAstronomySoftwareGroup/pyuvdata/"
        "actions\n\n"
        ".. image:: https://dev.azure.com/radioastronomysoftwaregroup/pyuvdata/"
        "_apis/build/status/RadioAstronomySoftwareGroup.pyuvdata?branchName=master\n"
        "    :target: https://dev.azure.com/radioastronomysoftwaregroup/pyuvdata/"
        "_build/latest?definitionId=1&branchName=master\n\n"
        ".. image:: https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata/"
        "branch/master/graph/badge.svg\n"
        "  :target: https://codecov.io/gh/RadioAstronomySoftwareGroup/pyuvdata\n\n"
        ".. image:: http://joss.theoj.org/papers/10.21105/joss.00140/status.svg\n"
        "  :target: https://doi.org/10.21105/joss.00140\n\n"
    )

    begin_desc = "pyuvdata defines a pythonic interface"
    start_desc = str.find(readme_text, begin_desc)

    readme_text = readme_text[start_desc:]

    # convert relative links in readme to explicit links
    readme_text = readme_text.replace(
        "<docs/",
        "<https://github.com/RadioAstronomySoftwareGroup/pyuvdata/tree/master/docs/",
    )

    readme_text = readme_text.replace(
        "<.github/",
        "<https://github.com/RadioAstronomySoftwareGroup/pyuvdata/tree/master/.github/",
    )

    readme_text = title_badge_text + readme_text

    end_text = "parameters descriptions"
    regex = re.compile(end_text.replace(" ", r"\s+"))
    loc = re.search(regex, readme_text).start()

    out += readme_text[0:loc] + end_text + "."
    out += (
        "\n\nFurther Documentation\n====================================\n"
        ".. toctree::\n"
        "   :maxdepth: 1\n\n"
        "   tutorial\n"
        "   uvdata_parameters\n"
        "   uvdata\n"
        "   uvcal_parameters\n"
        "   uvcal\n"
        "   uvbeam_parameters\n"
        "   uvbeam\n"
        "   uvflag_parameters\n"
        "   uvflag\n"
        "   cst_settings_yaml\n"
        "   utility_functions\n"
        "   known_telescopes\n"
        "   developer_docs\n"
    )

    out.replace(u"\u2018", "'").replace(u"\u2019", "'").replace(u"\xa0", " ")

    if write_file is None:
        write_path = os.path.dirname(os.path.abspath(inspect.stack()[0][1]))
        write_file = os.path.join(write_path, "index.rst")
    F = open(write_file, "w")
    F.write(out)
    print("wrote " + write_file)
back to top