Mercurial > public > mercurial-scm > python-hglib
comparison hglib/client.py @ 10:fce3102c19e5
client: sort commands by name
author | Idan Kamara <idankk86@gmail.com> |
---|---|
date | Tue, 09 Aug 2011 23:24:40 +0300 |
parents | 3ac38d500d68 |
children | 0549d00a617d |
comparison
equal
deleted
inserted
replaced
9:5882a698ad5c | 10:fce3102c19e5 |
---|---|
139 self.server.wait() | 139 self.server.wait() |
140 ret = self.server.returncode | 140 ret = self.server.returncode |
141 self.server = None | 141 self.server = None |
142 return ret | 142 return ret |
143 | 143 |
144 def branch(self, name=None): | |
145 if not name: | |
146 return self.rawcommand(['branch']).rstrip() | |
147 | |
148 def branches(self): | |
149 out = self.rawcommand(['branches']) | |
150 branches = {} | |
151 for line in out.rstrip().split('\n'): | |
152 branch, revnode = line.split() | |
153 branches[branch] = self.log(revrange=[revnode.split(':')[0]])[0] | |
154 | |
155 return branches | |
156 | |
157 def cat(self, files, rev=None, output=None): | |
158 args = cmdbuilder('cat', *files, r=rev, o=output) | |
159 out = self.rawcommand(args) | |
160 | |
161 if not output: | |
162 return out | |
163 | |
164 def clone(self, source='.', dest=None, branch=None, updaterev=None, | |
165 revrange=None): | |
166 args = cmdbuilder('clone', source, dest, b=branch, u=updaterev, r=revrange) | |
167 self.rawcommand(args) | |
168 | |
169 def commit(self, message, addremove=False): | |
170 args = cmdbuilder('commit', m=message, A=addremove) | |
171 | |
172 self.rawcommand(args) | |
173 | |
174 # hope the tip hasn't changed since we committed | |
175 return self.tip() | |
176 | |
177 def config(self, refresh=False): | |
178 if not self._config or refresh: | |
179 self._config.clear() | |
180 | |
181 out = self.rawcommand(['showconfig']) | |
182 | |
183 for entry in cStringIO.StringIO(out): | |
184 k, v = entry.rstrip().split('=', 1) | |
185 section, name = k.split('.', 1) | |
186 self._config.setdefault(section, {})[name] = v | |
187 | |
188 return self._config | |
189 | |
144 @property | 190 @property |
145 def encoding(self): | 191 def encoding(self): |
146 """ get the servers encoding """ | 192 """ get the servers encoding """ |
147 if not 'getencoding' in self.capabilities: | 193 if not 'getencoding' in self.capabilities: |
148 raise CapabilityError('getencoding') | 194 raise CapabilityError('getencoding') |
150 if not self._encoding: | 196 if not self._encoding: |
151 self.server.stdin.write('getencoding\n') | 197 self.server.stdin.write('getencoding\n') |
152 self._encoding = self._readfromchannel('r') | 198 self._encoding = self._readfromchannel('r') |
153 | 199 |
154 return self._encoding | 200 return self._encoding |
155 | |
156 def config(self, refresh=False): | |
157 if not self._config or refresh: | |
158 self._config.clear() | |
159 | |
160 out = self.rawcommand(['showconfig']) | |
161 | |
162 for entry in cStringIO.StringIO(out): | |
163 k, v = entry.rstrip().split('=', 1) | |
164 section, name = k.split('.', 1) | |
165 self._config.setdefault(section, {})[name] = v | |
166 | |
167 return self._config | |
168 | |
169 def status(self): | |
170 out = self.rawcommand(['status', '-0']) | |
171 | |
172 d = dict((c, []) for c in 'MARC!?I') | |
173 | |
174 for entry in out.split('\0'): | |
175 if entry: | |
176 t, f = entry.split(' ', 1) | |
177 d[t].append(f) | |
178 | |
179 return d | |
180 | |
181 def log(self, revrange=None): | |
182 args = cmdbuilder('log', template=templates.changeset, rev=revrange) | |
183 | |
184 out = self.rawcommand(args) | |
185 out = out.split('\0')[:-1] | |
186 | |
187 return self._parserevs(out) | |
188 | |
189 def incoming(self, revrange=None, path=None): | |
190 args = cmdbuilder('incoming', | |
191 path, | |
192 template=templates.changeset, rev=revrange) | |
193 | |
194 def eh(ret, out, err): | |
195 if ret != 1: | |
196 raise error.CommandError(args, ret, out, err) | |
197 | |
198 out = self.rawcommand(args, eh=eh) | |
199 if not out: | |
200 return [] | |
201 | |
202 out = util.eatlines(out, 2).split('\0')[:-1] | |
203 return self._parserevs(out) | |
204 | |
205 def outgoing(self, revrange=None, path=None): | |
206 args = cmdbuilder('outgoing', | |
207 path, template=templates.changeset, rev=revrange) | |
208 | |
209 def eh(ret, out, err): | |
210 if ret != 1: | |
211 raise error.CommandError(args, ret, out, err) | |
212 | |
213 out = self.rawcommand(args, eh=eh) | |
214 if not out: | |
215 return [] | |
216 | |
217 out = util.eatlines(out, 2).split('\0')[:-1] | |
218 return self._parserevs(out) | |
219 | |
220 def commit(self, message, addremove=False): | |
221 args = cmdbuilder('commit', m=message, A=addremove) | |
222 | |
223 self.rawcommand(args) | |
224 | |
225 # hope the tip hasn't changed since we committed | |
226 return self.tip() | |
227 | 201 |
228 def import_(self, patch): | 202 def import_(self, patch): |
229 if isinstance(patch, str): | 203 if isinstance(patch, str): |
230 fp = open(patch) | 204 fp = open(patch) |
231 else: | 205 else: |
242 prompt=readline, input=fp.read) | 216 prompt=readline, input=fp.read) |
243 finally: | 217 finally: |
244 if fp != patch: | 218 if fp != patch: |
245 fp.close() | 219 fp.close() |
246 | 220 |
247 def root(self): | 221 def incoming(self, revrange=None, path=None): |
248 return self.rawcommand(['root']).rstrip() | 222 args = cmdbuilder('incoming', |
249 | 223 path, |
250 def clone(self, source='.', dest=None, branch=None, updaterev=None, | 224 template=templates.changeset, rev=revrange) |
251 revrange=None): | 225 |
252 args = cmdbuilder('clone', source, dest, b=branch, u=updaterev, r=revrange) | 226 def eh(ret, out, err): |
253 self.rawcommand(args) | 227 if ret != 1: |
254 | 228 raise error.CommandError(args, ret, out, err) |
255 def tip(self): | 229 |
256 args = cmdbuilder('tip', template=templates.changeset) | 230 out = self.rawcommand(args, eh=eh) |
231 if not out: | |
232 return [] | |
233 | |
234 out = util.eatlines(out, 2).split('\0')[:-1] | |
235 return self._parserevs(out) | |
236 | |
237 def log(self, revrange=None): | |
238 args = cmdbuilder('log', template=templates.changeset, rev=revrange) | |
239 | |
257 out = self.rawcommand(args) | 240 out = self.rawcommand(args) |
258 out = out.split('\0') | 241 out = out.split('\0')[:-1] |
259 | 242 |
260 return self._parserevs(out)[0] | 243 return self._parserevs(out) |
261 | 244 |
262 def branch(self, name=None): | 245 def outgoing(self, revrange=None, path=None): |
263 if not name: | 246 args = cmdbuilder('outgoing', |
264 return self.rawcommand(['branch']).rstrip() | 247 path, template=templates.changeset, rev=revrange) |
265 | 248 |
266 def branches(self): | 249 def eh(ret, out, err): |
267 out = self.rawcommand(['branches']) | 250 if ret != 1: |
268 branches = {} | 251 raise error.CommandError(args, ret, out, err) |
269 for line in out.rstrip().split('\n'): | 252 |
270 branch, revnode = line.split() | 253 out = self.rawcommand(args, eh=eh) |
271 branches[branch] = self.log(revrange=[revnode.split(':')[0]])[0] | 254 if not out: |
272 | 255 return [] |
273 return branches | 256 |
257 out = util.eatlines(out, 2).split('\0')[:-1] | |
258 return self._parserevs(out) | |
274 | 259 |
275 def paths(self, name=None): | 260 def paths(self, name=None): |
276 if not name: | 261 if not name: |
277 out = self.rawcommand(['paths']) | 262 out = self.rawcommand(['paths']) |
278 if not out: | 263 if not out: |
282 else: | 267 else: |
283 args = cmdbuilder('paths', name) | 268 args = cmdbuilder('paths', name) |
284 out = self.rawcommand(args) | 269 out = self.rawcommand(args) |
285 return out.rstrip() | 270 return out.rstrip() |
286 | 271 |
287 def cat(self, files, rev=None, output=None): | 272 def root(self): |
288 args = cmdbuilder('cat', *files, r=rev, o=output) | 273 return self.rawcommand(['root']).rstrip() |
274 | |
275 def status(self): | |
276 out = self.rawcommand(['status', '-0']) | |
277 | |
278 d = dict((c, []) for c in 'MARC!?I') | |
279 | |
280 for entry in out.split('\0'): | |
281 if entry: | |
282 t, f = entry.split(' ', 1) | |
283 d[t].append(f) | |
284 | |
285 return d | |
286 | |
287 def tip(self): | |
288 args = cmdbuilder('tip', template=templates.changeset) | |
289 out = self.rawcommand(args) | 289 out = self.rawcommand(args) |
290 | 290 out = out.split('\0') |
291 if not output: | 291 |
292 return out | 292 return self._parserevs(out)[0] |
293 |