# -*- coding: utf-8 -*-
import os
import ablog

project = 'Nerv Project'
basename = 'nervproject'
project_uid = basename  # ISBN, etc.
baseurl = 'https://nerv-project.eu/'
copyright = '2021, Nerv Project ASBL - BCE 0756.741.342 - TVA BE0756741342 - KBR Éditeur 15066 - IBAN BE02751210684040 - BIC AXABBE22'
author = 'Nerv Project ASBL'
publisher = 'Nerv Project ASBL'
site_url = 'https://nerv-project.eu/'
vcs_uri = "https://procrastinator.nerv-project.eu/"
repository_name = 'nerv-project/'
repository_name += 'nerv_website'
use_ablog = True
use_bibtex = False
use_git = True
language = 'fr'
html_extra_path = [
    "_static/robots.txt",
    "_static/favicon.ico",
]

version = "0.1"
release = "0.1"

if use_ablog:
    blog_title = project
    blog_baseurl = baseurl
    blog_default_author = 'kujiu'
    blog_default_location = 'BLA'
    blog_authors = {
        'kujiu': ('Kujiu', 'https://kujiu.eu'),
        'ptitgnu': ('PtitGNU', 'https://www.it4freedom.net/blog.html'),
        'springouille': ('Springouille', 'https://www.instagram.com/springouille/'),
    }
    blog_locations = {
        'BLA': (
            "Braine-l'Alleud",
            "https://fr.wikipedia.org/wiki/Braine-l'Alleud"
        ),
    }
    post_date_format = 'Le %d %b %Y à %H:%M'
    post_auto_excerpt = 1
    post_auto_image = 1
    post_redirect_refresh = 5
    post_always_section = False
    post_auto_orphan = True

    blog_feed_fulltext = False
    blog_feed_subtitle = None
    blog_feed_titles = False
    blog_feed_length = 30
    fontawesome_link_cdn = None
    fontawesome_included = True
    fontawesome_css_file = ''
    show_authors = True

if use_git:
    from git import Repo

    repo = Repo(
        os.path.join(
            os.path.dirname(os.path.realpath(__file__)),
            '..'
        )
    )
    repo.config_reader()

    if not repo.head.is_detached:
        version = repo.head.ref.name
    release = version + ' [' + repo.commit().hexsha[:20] + ']'

    repository_uri = vcs_uri + repository_name
    issues_uri = repository_uri + "/issues/{issue}"
    issues_pr_uri = repository_uri + "/merge_requests/{pr}"
    issues_commit_uri = repository_uri + "/commit/{commit}"
    issues_user_uri = vcs_uri + "/{user}"

extensions = [
    'sphinxemoji.sphinxemoji',
    'sphinxcontrib.actdiag',
    'sphinxcontrib.blockdiag',
    'sphinxcontrib.nwdiag',
    'sphinxcontrib.seqdiag',
    'sphinx_galleria',
    'sphinx.ext.extlinks',
    'sphinx.ext.intersphinx',
    'sphinx.ext.todo',
    'sphinx_issues',
    'sphinx_sitemap',
    'sphinx_fasvg',
]

if use_ablog:
    extensions.append('ablog')

if use_git:
    extensions.append('sphinx_git')

if use_bibtex:
    extensions.append('sphinxcontrib.bibtex')

locale_dirs = ['locale/']

if use_ablog:
    locale_dirs.append(
        os.path.join(ablog.get_html_templates_path(), '..', 'locale'),
    )

templates_path = ['_templates']

source_suffix = '.rst'
master_doc = 'index'

exclude_patterns = []
pygments_style = 'sphinx'


html_logo = '_static/logo.svg'
html_theme = 'nervproject'
html_theme_options = {
    "logoalt": "Deux ronds bleu et orange s'entre-déchirent pour former la lettre N.",
    "social": [
        ('solid', 'building', 'BCE&nbsp;0756.741.342', 'https://kbopub.economie.fgov.be/kbopub/toonondernemingps.html?ondernemingsnummer=756741342', False),
        ('solid', 'receipt', 'TVA&nbsp;BE0756741342', 'https://kbopub.economie.fgov.be/kbopub/toonondernemingps.html?ondernemingsnummer=756741342', False),
        ('solid', 'books', 'KBR&nbsp;Éditeur&nbsp;15066', 'https://www.kbr.be', False),
        ('brands', 'mastodon', 'mastodon', 'https://tiphon.nerv-project.eu/@nerv_project', True),
        ('solid', 'mug-hot', 'forgejo', 'https://procrastinator.nerv-project.eu/nerv-project', True),
        ('solid', 'hashtag', 'xmpp', 'xmpp:asbl@clac.nerv-project.eu', True),
        ('regular', 'comments', 'movim', 'https://clac.nerv-project.eu/', False),
        ('solid', 'film', 'peertube', 'https://clap.nerv-project.eu/video-channels/kujiu_channel/videos', False),
        ('brands', 'youtube', 'youtube', 'https://www.youtube.com/channel/UC6LcFMVZUOs4WbKvV3p1xVw', False),
        ('solid', 'podcast', 'podcasts', 'https://kreskenn.nerv-project.eu', False),
        ('solid', 'paragraph', 'gemini', 'gemini://nerv-project.eu', False),
        ('solid', 'rss', 'rss', 'https://nerv-project.eu/blog/atom.xml', False),
        ('solid', 'rss', 'newsletter&nbsp;(rss)', 'https://morpork.nerv-project.eu/blog/atom.xml', False),
        ('solid', 'envelope', 'newsletter', 'https://e8eb781a.sibforms.com/serve/MUIEAJvJnY3tRS7Nh4RvCneup4b6zYrTqGw3TUsq3igy7_QACEbhSd8G26qTXES6uJS-fGtcGBaji0Os0eWK2CY2it80LrbbXL7WRdNibWlpKtLD2sv43rRROQxdBktxF0qci_7hXvkRuAKLRk_X3NtNCkRUV2prn0BHb4g4tr8vck_yic-nw_ZQlmAPWSrFd1FwGBGTqf1M_Frm', False),
    ],
    'external_languages': [
        # ('code', 'name', 'baseurl'),
        ('fr', 'Français', '/fr'),
        ('en', 'English', '/en'),
    ],
    "mastodon_user": "@nerv_project@tiphon.nerv-project.eu",
    "fathom": {
        'url': '//casanabo.nerv-project.eu',
        'id': 'CVTXH',
    },
    'isso': {
        'prefix': '/isso/nervproject',
        'url': baseurl + '/isso/nervproject',
        'require_author': "true",
        'reply_to_self': "true",
        'require_author': "true",
        'require_email': "false",
        'reply_notif': "true",
        'max_comments_top': 20,
        'max_comments_nested': 20,
        'reveal_on_click': 20,
        'avatar': "true",
        'vote': "false",
        'vote_levels': "",
        'feed': "true",
    },
    "license": {
        'text': 'EUPL 1.2',
        'url': "https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12"
    }
}
html_static_path = ['_static']
html_sidebars = {
    '**': [
        'about.html',
        'social.html',
        'ablog/postcard.html',
        'util/sidetoc.html',
        'ablog/recentposts.html',
        'ablog/categories.html',
        'ablog/tagcloud.html',
        'ablog/archives.html',
        'util/searchbox.html',
    ],
}
html_baseurl = baseurl
htmlhelp_basename = basename

pyppeteer_pdf_options = {
    'printBackground': True,
    'format': 'A4',
    'margin': {
        'top': '0mm',
        'bottom': '0mm',
        'left': '0mm',
        'right': '0mm'
    }
}

gemini_baseurl = 'gemini://nerv-project.eu/'
gemini_footer = """

# Menu

=> gemini://nerv-project.eu Accueil

## Nerv Project

=> gemini://nerv-project.eu/nervproject/histoire.gmi Histoire
=> gemini://nerv-project.eu/nervproject/organisation.gmi Organisation
=> gemini://nerv-project.eu/nervproject/missions.gmi Missions
=> gemini://nerv-project.eu/nervproject/risques.gmi Risques
=> gemini://nerv-project.eu/nervproject/technologie.gmi Technologie

## Outils

=> gemini://nerv-project.eu/utils/sphinx_storymaker.gmi Sphinx StoryMaker
=> gemini://nerv-project.eu/utils/sphinx_studiowriter.gmi Sphinx StudioWriter

## Publications

=> gemini://nerv-project.eu/publications/series/index.gmi Séries
=> gemini://nerv-project.eu/publications/oneshots/index.gmi One shots

## Le collectif

=> gemini://nerv-project.eu/collectif/covid19.gmi Covid 19
=> gemini://nerv-project.eu/collectif/ressources.gmi Ressources
=> gemini://nerv-project.eu/collectif/contributeurs/index.gmi Contributeurs
=> gemini://nerv-project.eu/collectif/mentions_legales.gmi Mentions légales
=> gemini://nerv-project.eu/collectif/copyright.gmi Droit d'auteur
=> gemini://nerv-project.eu/collectif/accessibility.gmi Déclaration d'accessibilité
=> gemini://nerv-project.eu/collectif/confidentiality.gmi Déclaration de confidentialité
=> gemini://nerv-project.eu/collectif/contact.gmi Contact
=> gemini://nerv-project.eu/collectif/statuts.gmi Statuts
=> gemini://nerv-project.eu/collectif/reglement.gmi Règlement
=> gemini://nerv-project.eu/collectif/registres/index.gmi Registres
=> gemini://nerv-project.eu/collectif/comptabilite/index.gmi Comptabilité
=> gemini://nerv-project.eu/collectif/historique.gmi Historique

=> gemini://nerv-project.eu/blog/atom.xml Abonnez-vous !
Nerv Project ASBL - BCE 0756.741.342 - TVA BE0756741342 - KBR Éditeur 15066 - IBAN BE02751210684040 - BIC AXABBE22.

Licensed under EUPL 1.2

Créé avec Sphinx.
"""

latex_engine = 'xelatex'
latex_toplevel_sectioning = 'chapter'
latex_show_urls = 'footnote'
latex_elements = {
    # 'figure_align': 'htbp',
    # 'extraclassoptions': '',
    'papersize': 'a4paper',
    'pointsize': '12pt',
    'extraclassoptions': 'twoside',
    'fontpkg': r'''
        \defaultfontfeatures{Ligatures=TeX}
        \setmainfont{Linux Biolinum O}
        \setsansfont{Linux Biolinum O}
    '''
}
latex_show_pagerefs = True
latex_documents = [
    (master_doc, basename + '.tex', project,
     author, 'book'),
]


man_pages = [
    (master_doc, basename.lower(), project, [author], 1)
]


texinfo_documents = [
    (master_doc, basename, project,
     author, basename, '',
     'Miscellaneous'),
]


epub_title = project
epub_author = author
epub_publisher = publisher
epub_copyright = copyright

epub_identifier = project_uid
epub_uid = ''
epub_exclude_files = [
   'index.xhtml',
   'search.xhtml',
   'blog.xhtml',
   'submit_success.xhtml',
   'contact.xhtml',
   '403.xhtml',
   '404.xhtml',
   'blog/archive.xhtml',
   'blog/category.xhtml',
   'blog/drafts.xhtml',
   'blog/author.xhtml',
   'blog/language.xhtml',
   'blog/location.xhtml',
   'blog/location/braine-lalleud.xhtml',
   'blog/language/francais.xhtml',
   'blog/author/kujiu.xhtml',
   'blog/author/ptitgnu.xhtml',
   'blog/2014.xhtml',
   'blog/2015.xhtml',
   'blog/2016.xhtml',
   'blog/2017.xhtml',
   'blog/2018.xhtml',
   'blog/2019.xhtml',
   'blog/2020.xhtml',
   'blog/2021.xhtml',
   'blog/2022.xhtml',
   'blog/2023.xhtml',
   'blog/2024.xhtml',
   'blog/category/accueil.xhtml',
   'blog/category/outils.xhtml',
   'blog/category/la-victoire-des-grelots.xhtml',
   'blog/category/series.xhtml',
   'blog/category/one-shots.xhtml',
   'publications/index.xhtml',
   'publications/series/la_victoire_des_grelots/index.xhtml',
   'publications/series/la_victoire_des_grelots/progression.xhtml',
   'outils/index.xhtml',
   'outils/sphinx_storymaker.xhtml',
   'outils/sphinx_studiowriter.xhtml',
   'google82f190054a773ed9.xhtml',
   'genindex.xhtml',
   'historique.xhtml',
   'apropos.xhtml',
   'nav.xhtml'
]
epub_theme = 'nervproject'
epub_theme_options = html_theme_options
epub_show_urls = 'footnote'

diag_antialias = True
diag_transparency = True
diag_html_image_format = "SVG"
diag_latex_image_format = "PDF"
diag_fontpath = os.path.dirname(os.path.realpath(__file__))
diag_fontpath = os.path.join(diag_fontpath, '_static', 'biolinumrah.ttf')
diag_debug = False

actdiag_antialias = diag_antialias
actdiag_transparency = diag_transparency
actdiag_html_image_format = diag_html_image_format
actdiag_latex_image_format = diag_latex_image_format
actdiag_fontpath = diag_fontpath
actdiag_debug = diag_debug

blockdiag_antialias = diag_antialias
blockdiag_transparency = diag_transparency
blockdiag_html_image_format = diag_html_image_format
blockdiag_fontpath = diag_fontpath
blockdiag_latex_image_format = diag_latex_image_format
blockdiag_debug = diag_debug

nwdiag_antialias = diag_antialias
nwdiag_transparency = diag_transparency
nwdiag_html_image_format = diag_html_image_format
nwdiag_latex_image_format = diag_latex_image_format
nwdiag_fontpath = diag_fontpath
nwdiag_debug = diag_debug

seqdiag_antialias = diag_antialias
seqdiag_transparency = diag_transparency
seqdiag_html_image_format = diag_html_image_format
seqdiag_latex_image_format = diag_latex_image_format
seqdiag_fontpath = diag_fontpath
seqdiag_debug = diag_debug


if use_bibtex:
    import pybtex.style.formatting
    from pybtex.richtext import Text, Tag

    class NervPybtexStyle(pybtex.style.formatting.BaseStyle):
        def format_article(self, entry):
            return Text(Tag('em', entry.fields['key']))
