summaryrefslogtreecommitdiff
path: root/sphinx/ext/githubpages.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/ext/githubpages.py')
-rw-r--r--sphinx/ext/githubpages.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/sphinx/ext/githubpages.py b/sphinx/ext/githubpages.py
index f39d1cb58..5cecddd09 100644
--- a/sphinx/ext/githubpages.py
+++ b/sphinx/ext/githubpages.py
@@ -9,6 +9,7 @@
"""
import os
+import urllib
import sphinx
@@ -19,14 +20,22 @@ if False:
from sphinx.environment import BuildEnvironment # NOQA
-def create_nojekyll(app, env):
+def create_nojekyll_and_cname(app, env):
# type: (Sphinx, BuildEnvironment) -> None
if app.builder.format == 'html':
- path = os.path.join(app.builder.outdir, '.nojekyll')
- open(path, 'wt').close()
+ open(os.path.join(app.builder.outdir, '.nojekyll'), 'wt').close()
+
+ html_baseurl = app.config.html_baseurl
+ if html_baseurl:
+ domain = urllib.parse.urlparse(html_baseurl).hostname
+ if domain and not domain.endswith(".github.io"):
+ with open(os.path.join(app.builder.outdir, 'CNAME'), 'wt') as f:
+ # NOTE: don't write a trailing newline. The `CNAME` file that's
+ # auto-generated by the Github UI doesn't have one.
+ f.write(domain)
def setup(app):
# type: (Sphinx) -> Dict[str, Any]
- app.connect('env-updated', create_nojekyll)
+ app.connect('env-updated', create_nojekyll_and_cname)
return {'version': sphinx.__display_version__, 'parallel_read_safe': True}