wpilibsuite / sphinxext-opengraph

Sphinx extension to generate unique OpenGraph metadata
https://sphinxext-opengraph.readthedocs.io
Other
69 stars 25 forks source link

Auto-generate site URL if one is not given using CI/CD environment variables #93

Open choldgraf opened 1 year ago

choldgraf commented 1 year ago

The ogp_site_url field is the only one strictly required by this extension, but I find that folks often forget to set it nonetheless. On many CI/CD systems, there are often environment variables that could be used as a fallback if site_url isn't present. This might be helpful for folks that forget or that simply don't want to have to worry about manually specifying the URL.

For example:

GitHub or ReadTheDocs examples

GitHub Actions have default environment variables for all actions. ReadTheDocs also has default environment variables.

Assuming that a person building Sphinx with GitHub Actions is using GitHub Pages (and same w/ ReadTheDocs) you could create a site URL using these variables. For example:

import os
env = os.environ

if "GITHUB_ACTION" in env:
    site_url = f"https://{env['GITHUB_REPOSITORY_OWNER']}.github.io/{env['GITHUB_REPOSITORY']}"
elif "READTHEDOCS" in env:
    site_url = f"https://{env['READTHEDOCS_PROJECT']}.readthedocs.io/{env['READTHEDOCS_LANGUAGE']}/{env['READTHEDOCS_VERSION_NAME']}"
TheTripleV commented 1 year ago

The site url is already autopopulated on ReadTheDocs so that case is taken care of. I'm weary of automatically setting the site url in Github Actions. If a user uses Github Actions to build their docs and deploys the built docs/artifacts elsewhere, the url will silently be wrong.

If there's a way on Github Actions to detect if the build is being deployed to Github Pages, then I'd be open to adding the auto site url there too.