Skip to content

Commit

Permalink
add initial mkdocs setup
Browse files Browse the repository at this point in the history
  • Loading branch information
minhnh committed Nov 26, 2024
1 parent 6302d3b commit 7ce2640
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 0 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/deploy-mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Publish docs with MkDocs via GitHub Pages
on:
push:
branches:
- main
- feature/docs

jobs:
build:
name: Deploy docs
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure Git Credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install ".[docs]"
- name: Deploy MkDocs
run: mkdocs gh-deploy --force
Empty file added docs/README.md
Empty file.
6 changes: 6 additions & 0 deletions docs/styles/extra.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
:root {
--md-primary-fg-color: #9d2246;
--md-primary-fg-color--light: #d50c2f;
--md-primary-fg-color--dark: #9d2246;
--md-accent-fg-color: #f39ca9;
}
78 changes: 78 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
site_name: RDF Utilities
site_description: 'A utility package for handling RDF graphs and RDF models'
site_author: 'Minh Nguyen'
repo_url: https://github.com/minhnh/rdf-utils

nav:
- Home: README.md
# defer to gen-files + literate-nav
- API reference: reference/
theme:
name: 'material'
# logo: assets/logo.png
icon:
repo: fontawesome/brands/github
palette:
# Palette toggle for automatic mode
- media: "(prefers-color-scheme)"
primary: custom
accent: custom
toggle:
icon: material/brightness-auto
name: Switch to light mode
# Palette toggle for light mode
- media: "(prefers-color-scheme: light)"
scheme: default
primary: custom
accent: custom
toggle:
icon: material/brightness-7
name: Switch to dark mode
# Palette toggle for dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: custom
accent: custom
toggle:
icon: material/brightness-4
name: Switch to system preference

plugins:
- search
- awesome-pages
- gen-files:
scripts:
- scripts/gen_api_pages.py
- literate-nav:
nav_file: SUMMARY.md
- section-index
- mkdocstrings:
default_handler: python
handlers:
python:
# cross-ref to other projects
import:
- https://docs.python.org/3/objects.inv
- https://rdflib.readthedocs.io/en/stable/objects.inv
paths: [src]
options:
# see full list of options at https://mkdocstrings.github.io/python/usage/
docstring_options:
ignore_init_summary: true
docstring_section_style: list
merge_init_into_class: true
separate_signature: true
heading_level: 1
summary: true

extra_css:
- styles/extra.css

extra:
social:
- icon: fontawesome/brands/github
link: https://github.com/secorolab
- icon: material/web
link: https://www.uni-bremen.de/secoro

copyright: Copyright © 2024 SECORO Group
9 changes: 9 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ distrib = [
"numpy",
"scipy",
]
docs = [
"pathlib", # API generation script
"mkdocs-material", # material theme
"mkdocs-awesome-pages-plugin", # allow short hands for loading all markdowns
"mkdocstrings[python]", # render API pages for Python
"mkdocs-literate-nav", # summary API page
"mkdocs-gen-files", # generate API files
"mkdocs-section-index", # generate index for API
]
[project.urls]
"Homepage" = "https://github.com/minhnh/rdf-utils"

Expand Down
38 changes: 38 additions & 0 deletions scripts/gen_api_pages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Generate the API reference pages.
Taken from https://mkdocstrings.github.io/recipes/
"""

from pathlib import Path
import mkdocs_gen_files


root = Path(__file__).parent.parent
src = root / "src"

nav = mkdocs_gen_files.Nav()

for path in sorted(src.rglob("*.py")):
module_path = path.relative_to(src).with_suffix("")
doc_path = path.relative_to(src).with_suffix(".md")
full_doc_path = Path("reference", doc_path)

parts = tuple(module_path.parts)

if parts[-1] == "__init__":
parts = parts[:-1]
doc_path = doc_path.with_name("index.md")
full_doc_path = full_doc_path.with_name("index.md")
elif parts[-1] == "__main__":
continue

nav[parts] = doc_path.as_posix()

with mkdocs_gen_files.open(full_doc_path, "w") as fd:
ident = ".".join(parts)
fd.write(f"---\ntitle: {ident}\n---\n\n::: {ident}")

mkdocs_gen_files.set_edit_path(full_doc_path, path.relative_to(root))

with mkdocs_gen_files.open("reference/SUMMARY.md", "w") as nav_file:
nav_file.writelines(nav.build_literate_nav())

0 comments on commit 7ce2640

Please sign in to comment.