# -*- coding: utf-8 -*-
#
# datalad_cds documentation build configuration file, created by
# sphinx-quickstart on Tue Oct 13 08:41:19 2015.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.

import datetime
import subprocess
import sys
from os import pardir
from os.path import abspath, dirname, exists
from os.path import join as opj
from typing import List

import datalad_cds

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
# sys.path.insert(0, os.path.abspath('.'))

# generate missing pieces
for setup_py_path in (
    opj(pardir, "setup.py"),  # travis
    opj(pardir, pardir, "setup.py"),
):  # RTD
    if exists(setup_py_path):
        sys.path.insert(0, abspath(dirname(setup_py_path)))
        # Build manpage
        try:
            subprocess.run(
                args=[
                    setup_py_path,
                    "build_manpage",
                    "--cmdsuite",
                    "datalad_cds:command_suite",
                    "--manpath",
                    abspath(opj(dirname(setup_py_path), "build", "man")),
                    "--rstpath",
                    opj(dirname(__file__), "generated", "man"),
                ],
                check=True,
            )
        except (FileNotFoundError, subprocess.CalledProcessError):
            # shut up and do your best
            pass

# -- General configuration ------------------------------------------------

# If your documentation needs a minimal Sphinx version, state it here.
# needs_sphinx = '1.0'

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
    "sphinx.ext.autodoc",
    "sphinx.ext.autosummary",
    "sphinx.ext.doctest",
    "sphinx.ext.intersphinx",
    "sphinx.ext.todo",
    "sphinx.ext.coverage",
    "sphinx.ext.mathjax",
    "sphinx.ext.ifconfig",
    "sphinx.ext.inheritance_diagram",
    "sphinx.ext.viewcode",
    "sphinx.ext.napoleon",
]

# for the module reference
autosummary_generate = True

# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]

# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = ".rst"

# The master toctree document.
master_doc = "index"

# General information about the project.
project = "DataLad CDS extension"
copyright = "2018-{}, Matthias Riße, the DataLad team and contributors".format(
    datetime.datetime.now().year
)
author = "Matthias Riße"

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
version = datalad_cds.__version__
release = version

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = "en"

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns: List[str] = []

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"

# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True

# Example configuration for intersphinx: refer to the Python standard library.
intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}

# -- Options for HTML output ----------------------------------------------

# The theme to use for HTML and HTML Help pages.  See the documentation for
# a list of builtin themes.
html_theme = "sphinx_rtd_theme"

# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = "_static/datalad_logo.png"

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]

# If true, the index is split into individual pages for each letter.
html_split_index = True

# If true, links to the reST sources are added to the pages.
html_show_sourcelink = False

# smart quotes are incompatible with the RST flavor of the generated manpages
# but see `smartquotes_action` for more fine-grained control, in case
# some of this functionality is needed
smartquotes = False
