##// END OF EJS Templates
hooks: added new hooks for ssh support
marcink -
r276:c5ac49cc default
parent child Browse files
Show More
@@ -18,6 +18,7 b''
18 18 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 19
20 20 import io
21 import os
21 22 import sys
22 23 import json
23 24 import logging
@@ -124,6 +125,7 b' def _get_hooks_client(extras):'
124 125 def _call_hook(hook_name, extras, writer):
125 126 hooks = _get_hooks_client(extras)
126 127 result = hooks(hook_name, extras)
128 log.debug('Hooks got result: %s', result)
127 129 writer.write(result['output'])
128 130 _handle_exception(result)
129 131
@@ -131,22 +133,14 b' def _call_hook(hook_name, extras, writer'
131 133
132 134
133 135 def _extras_from_ui(ui):
134 extras = json.loads(ui.config('rhodecode', 'RC_SCM_DATA'))
136 hook_data = ui.config('rhodecode', 'RC_SCM_DATA')
137 if not hook_data:
138 # maybe it's inside environ ?
139 hook_data = os.environ.get('RC_SCM_DATA')
140 extras = json.loads(hook_data)
135 141 return extras
136 142
137 143
138 def repo_size(ui, repo, **kwargs):
139 return _call_hook('repo_size', _extras_from_ui(ui), HgMessageWriter(ui))
140
141
142 def pre_pull(ui, repo, **kwargs):
143 return _call_hook('pre_pull', _extras_from_ui(ui), HgMessageWriter(ui))
144
145
146 def post_pull(ui, repo, **kwargs):
147 return _call_hook('post_pull', _extras_from_ui(ui), HgMessageWriter(ui))
148
149
150 144 def _rev_range_hash(repo, node):
151 145
152 146 commits = []
@@ -159,6 +153,33 b' def _rev_range_hash(repo, node):'
159 153 return commits
160 154
161 155
156 def repo_size(ui, repo, **kwargs):
157 extras = _extras_from_ui(ui)
158 return _call_hook('repo_size', extras, HgMessageWriter(ui))
159
160
161 def pre_pull(ui, repo, **kwargs):
162 extras = _extras_from_ui(ui)
163 return _call_hook('pre_pull', extras, HgMessageWriter(ui))
164
165
166 def pre_pull_ssh(ui, repo, **kwargs):
167 if _extras_from_ui(ui).get('SSH'):
168 return pre_pull(ui, repo, **kwargs)
169 return 0
170
171
172 def post_pull(ui, repo, **kwargs):
173 extras = _extras_from_ui(ui)
174 return _call_hook('post_pull', extras, HgMessageWriter(ui))
175
176
177 def post_pull_ssh(ui, repo, **kwargs):
178 if _extras_from_ui(ui).get('SSH'):
179 return post_pull(ui, repo, **kwargs)
180 return 0
181
182
162 183 def pre_push(ui, repo, node=None, **kwargs):
163 184 extras = _extras_from_ui(ui)
164 185
@@ -182,6 +203,27 b' def pre_push(ui, repo, node=None, **kwar'
182 203 return _call_hook('pre_push', extras, HgMessageWriter(ui))
183 204
184 205
206 def pre_push_ssh(ui, repo, node=None, **kwargs):
207 if _extras_from_ui(ui).get('SSH'):
208 return pre_push(ui, repo, node, **kwargs)
209
210 return 0
211
212
213 def pre_push_ssh_auth(ui, repo, node=None, **kwargs):
214 extras = _extras_from_ui(ui)
215 if extras.get('SSH'):
216 permission = extras['SSH_PERMISSIONS']
217
218 if 'repository.write' == permission or 'repository.admin' == permission:
219 return 0
220
221 # non-zero ret code
222 return 1
223
224 return 0
225
226
185 227 def post_push(ui, repo, node, **kwargs):
186 228 extras = _extras_from_ui(ui)
187 229
@@ -208,12 +250,19 b' def post_push(ui, repo, node, **kwargs):'
208 250 return _call_hook('post_push', extras, HgMessageWriter(ui))
209 251
210 252
253 def post_push_ssh(ui, repo, node, **kwargs):
254 if _extras_from_ui(ui).get('SSH'):
255 return post_push(ui, repo, node, **kwargs)
256 return 0
257
258
211 259 def key_push(ui, repo, **kwargs):
212 260 if kwargs['new'] != '0' and kwargs['namespace'] == 'bookmarks':
213 261 # store new bookmarks in our UI object propagated later to post_push
214 262 ui._rc_pushkey_branches = repo[kwargs['key']].bookmarks()
215 263 return
216 264
265
217 266 # backward compat
218 267 log_pull_action = post_pull
219 268
General Comments 0
You need to be logged in to leave comments. Login now