Skip to content

Commit

Permalink
DOC - Enable viewing dev and stable versions of package documentation (
Browse files Browse the repository at this point in the history
  • Loading branch information
Badr-MOUFAD authored Nov 14, 2023
1 parent 261fee0 commit c67a885
Show file tree
Hide file tree
Showing 5 changed files with 97 additions and 2 deletions.
12 changes: 12 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,21 @@ jobs:
chmod og= ~/.ssh/config
cd doc;
pip install ghp-import;
make add-stable-doc
make install
fi
# Add stable documentation
- run:
name: stable_doc
command: |
set -e
mkdir -p ~/.ssh
echo -e "Host *\nStrictHostKeyChecking no" > ~/.ssh/config
chmod og= ~/.ssh/config
cd doc;
make add-stable-doc
# Save the outputs
- store_artifacts:
path: doc/_build/html/
Expand Down
12 changes: 12 additions & 0 deletions doc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ BUILDDIR = _build

GITHUB_PAGES_BRANCH = gh-pages
OUTPUTDIR = _build/html
STABLE_DOC_DIR = stable

# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
Expand Down Expand Up @@ -138,3 +139,14 @@ install:
touch $(OUTPUTDIR)/.nojekyll
ghp-import -m "Generate Pelican site [ci skip]" -b $(GITHUB_PAGES_BRANCH) $(OUTPUTDIR)
git push origin $(GITHUB_PAGES_BRANCH)

.PHONY: add-stable-doc
add-stable-doc:
# switch to GITHUB_PAGES_BRANCH where stable build is located
git fetch origin $(GITHUB_PAGES_BRANCH)
git checkout $(GITHUB_PAGES_BRANCH)
git pull origin $(GITHUB_PAGES_BRANCH)
# move the content of the stable build to the output dir
mv ../$(STABLE_DOC_DIR) $(OUTPUTDIR)
# switch back to main and get to doc directory
git checkout main
24 changes: 24 additions & 0 deletions doc/_static/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
.announcement {
background-color: #1f77b4;
}

.sidebar-version {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;

padding-left: var(--sidebar-item-spacing-horizontal);
padding-right: var(--sidebar-item-spacing-horizontal);
margin-top: 0px;
}

.sidebar-version-selected>* {
display: flex;
align-items: center;
padding: 0.25em;
border-radius: 0.25rem;
background-color: #ff7f0e;
color: white;
pointer-events: none;
}
17 changes: 17 additions & 0 deletions doc/_templates/sidebar/version_toggler.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<div class="sidebar-tree sidebar-version">
<span style="color: #767676;">Version</span>

<div style="display: flex; align-items: center; gap: 0.25em;">
<span class="{{ 'sidebar-version-selected' if is_stable_doc else '' }}">
<a style=" text-decoration: none;" href="stable/index.html">
Stable
</a>
</span>

<span class="{{ '' if is_stable_doc else 'sidebar-version-selected' }}">
<a style="text-decoration: none;" href="../index.html">
Dev
</a>
</span>
</div>
</div>
34 changes: 32 additions & 2 deletions doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@
# custom ext, see ./sphinxext/gh_substitutions.py
]

# set it to True to build a stable version of the documentation
is_stable_doc = False

myst_enable_extensions = [
"dollarmath",
"amsmath"
Expand All @@ -76,6 +79,8 @@
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

html_css_files = ["style.css"]

# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
Expand Down Expand Up @@ -208,7 +213,7 @@

# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
html_title = f"skglm {version} documentation"

# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
Expand Down Expand Up @@ -241,7 +246,32 @@
#html_use_smartypants = True

# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
html_sidebars = {
"**": [
"sidebar/brand.html",
"sidebar/version_toggler.html", # version toggler template
"sidebar/search.html",
"sidebar/navigation.html",
]
}

# these variables will be available in the sphinx templates
html_context = {
"is_stable_doc": is_stable_doc
}


# when it's the dev version of the documentation, put a banner to warn the user
# and a link to switch to the dev version of doc
if not is_stable_doc:
html_theme_options = {
"announcement": (
"You are viewing the documentation of the dev version of "
"<code>skglm</code> which contains WIP features. "
"View <a href='stable/index.html'>stable version</a>."
)
}


# Additional templates that should be rendered to pages, maps page names to
# template names.
Expand Down

0 comments on commit c67a885

Please sign in to comment.