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/{}" .
41+ format (travis_slug .replace ("/" , "%2F" )),
42+ headers = {
43+ "Travis-API-Version" : "3" ,
44+ "User-Agent" :
45+ "Sphinx-Alabaster-Theme/{version} "
46+ "(+https://github.com/bitprophet/alabaster)" .
47+ format (version = version .__version__ ),
48+ },
49+ )
50+ is_travis_com_repo = 200 <= travis_api_response .status_code < 300
51+ travis_tld = 'com' if is_travis_com_repo else 'org'
52+ except NameError :
53+ travis_tld = 'com'
54+ elif travis_tld != 'com' :
55+ travis_tld = 'org'
56+ travis_base_uri = 'travis-ci.{}/{}' .format (travis_tld , travis_slug )
57+ context ["theme_travis_build_url" ] = 'https://{}' .format (travis_base_uri )
58+ context ["theme_travis_badge_url" ] = 'https://api.{}.svg?branch={}' .format (
59+ travis_base_uri ,
60+ context ["theme_badge_branch" ],
61+ )
62+
1763
1864def setup (app ):
1965 # add_html_theme is new in Sphinx 1.6+
0 commit comments