11import os
22
3+ try :
4+ import requests
5+ except ImportError :
6+ pass
7+
38from alabaster import _version as version
49
510
@@ -14,6 +19,45 @@ def get_path():
1419def update_context (app , pagename , templatename , context , doctree ):
1520 context ["alabaster_version" ] = version .__version__
1621
22+ set_up_travis_context (context )
23+
24+
25+ def set_up_travis_context (context ):
26+ """Add complete Travis URLs to Jinja2 context."""
27+ github_slug = "/" .join ((context ["theme_github_user" ], context ["theme_github_repo" ]))
28+
29+ travis_button = str (context ["theme_travis_button" ]).lower ()
30+ travis_button_enabled = travis_button == "true"
31+
32+ travis_slug = github_slug if travis_button_enabled else travis_button
33+
34+ travis_tld = context ["theme_travis_tld" ].lower ()
35+ if travis_button_enabled and travis_tld == "auto" :
36+ try :
37+ travis_api_response = requests .get (
38+ "https://api.travis-ci.com/repo/{}" .format (
39+ travis_slug .replace ("/" , "%2F" )
40+ ),
41+ headers = {
42+ "Travis-API-Version" : "3" ,
43+ "User-Agent" : "Sphinx-Alabaster-Theme/{version} "
44+ "(+https://github.com/bitprophet/alabaster)" .format (
45+ version = version .__version__
46+ ),
47+ },
48+ )
49+ is_travis_com_repo = 200 <= travis_api_response .status_code < 300
50+ travis_tld = "com" if is_travis_com_repo else "org"
51+ except NameError :
52+ travis_tld = "com"
53+ elif travis_tld != "com" :
54+ travis_tld = "org"
55+ travis_base_uri = "travis-ci.{}/{}" .format (travis_tld , travis_slug )
56+ context ["theme_travis_build_url" ] = "https://{}" .format (travis_base_uri )
57+ context ["theme_travis_badge_url" ] = "https://api.{}.svg?branch={}" .format (
58+ travis_base_uri , context ["theme_badge_branch" ]
59+ )
60+
1761
1862def setup (app ):
1963 # add_html_theme is new in Sphinx 1.6+
0 commit comments