Show More
@@ -33,6 +33,11 b' Config::' | |||
|
33 | 33 | # if you need to specify advanced options that is not easily supported by |
|
34 | 34 | # the internal library. |
|
35 | 35 | curlcmd = curl --connect-timeout 2 --retry 3 --silent |
|
36 | ||
|
37 | [phabricator.auth] | |
|
38 | example.url = https://phab.example.com/ | |
|
39 | # API token. Get it from https://$HOST/conduit/login/ | |
|
40 | example.token = cli-xxxxxxxxxxxxxxxxxxxxxxxxxxxx | |
|
36 | 41 | """ |
|
37 | 42 | |
|
38 | 43 | from __future__ import absolute_import |
@@ -100,14 +105,33 b' def readurltoken(repo):' | |||
|
100 | 105 | Currently read from [phabricator] config section. In the future, it might |
|
101 | 106 | make sense to read from .arcconfig and .arcrc as well. |
|
102 | 107 | """ |
|
103 | values = [] | |
|
104 | section = 'phabricator' | |
|
105 | for name in ['url', 'token']: | |
|
106 | value = repo.ui.config(section, name) | |
|
107 | if not value: | |
|
108 | raise error.Abort(_('config %s.%s is required') % (section, name)) | |
|
109 | values.append(value) | |
|
110 | return values | |
|
108 | url = repo.ui.config('phabricator', 'url') | |
|
109 | if not url: | |
|
110 | raise error.Abort(_('config %s.%s is required') | |
|
111 | % ('phabricator', 'url')) | |
|
112 | ||
|
113 | groups = {} | |
|
114 | for key, val in repo.ui.configitems('phabricator.auth'): | |
|
115 | if '.' not in key: | |
|
116 | repo.ui.warn(_("ignoring invalid [phabricator.auth] key '%s'\n") | |
|
117 | % key) | |
|
118 | continue | |
|
119 | group, setting = key.rsplit('.', 1) | |
|
120 | groups.setdefault(group, {})[setting] = val | |
|
121 | ||
|
122 | token = None | |
|
123 | for group, auth in groups.iteritems(): | |
|
124 | if url != auth.get('url'): | |
|
125 | continue | |
|
126 | token = auth.get('token') | |
|
127 | if token: | |
|
128 | break | |
|
129 | ||
|
130 | if not token: | |
|
131 | raise error.Abort(_('Can\'t find conduit token associated to %s') | |
|
132 | % (url,)) | |
|
133 | ||
|
134 | return url, token | |
|
111 | 135 | |
|
112 | 136 | def callconduit(repo, name, params): |
|
113 | 137 | """call Conduit API, params is a dict. return json.loads result, or None""" |
General Comments 0
You need to be logged in to leave comments.
Login now