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,47 @@ 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 (
28+ (context ["theme_github_user" ], context ["theme_github_repo" ])
29+ )
30+
31+ travis_button = str (context ["theme_travis_button" ]).lower ()
32+ travis_button_enabled = travis_button == "true"
33+
34+ travis_slug = github_slug if travis_button_enabled else travis_button
35+
36+ travis_tld = context ["theme_travis_tld" ].lower ()
37+ if travis_button_enabled and travis_tld == "auto" :
38+ try :
39+ travis_api_response = requests .get (
40+ "https://api.travis-ci.com/repo/{}" .format (
41+ travis_slug .replace ("/" , "%2F" )
42+ ),
43+ headers = {
44+ "Travis-API-Version" : "3" ,
45+ "User-Agent" : "Sphinx-Alabaster-Theme/{version} "
46+ "(+https://github.com/bitprophet/alabaster)" .format (
47+ version = version .__version__
48+ ),
49+ },
50+ )
51+ is_travis_com_repo = 200 <= travis_api_response .status_code < 300
52+ travis_tld = "com" if is_travis_com_repo else "org"
53+ except NameError :
54+ travis_tld = "com"
55+ elif travis_tld != "com" :
56+ travis_tld = "org"
57+ travis_base_uri = "travis-ci.{}/{}" .format (travis_tld , travis_slug )
58+ context ["theme_travis_build_url" ] = "https://{}" .format (travis_base_uri )
59+ context ["theme_travis_badge_url" ] = "https://api.{}.svg?branch={}" .format (
60+ travis_base_uri , context ["theme_badge_branch" ]
61+ )
62+
1763
1864def setup (app ):
1965 # add_html_theme is new in Sphinx 1.6+
0 commit comments