##// END OF EJS Templates
alias: keep error message in "badalias" so that help can see it...
Yuya Nishihara -
r22160:645457f7 default
parent child Browse files
Show More
@@ -357,12 +357,13 b' class cmdalias(object):'
357 self.name = self.cmd = name
357 self.name = self.cmd = name
358 self.cmdname = ''
358 self.cmdname = ''
359 self.definition = definition
359 self.definition = definition
360 self.fn = None
360 self.args = []
361 self.args = []
361 self.opts = []
362 self.opts = []
362 self.help = ''
363 self.help = ''
363 self.norepo = True
364 self.norepo = True
364 self.optionalrepo = False
365 self.optionalrepo = False
365 self.badalias = False
366 self.badalias = None
366
367
367 try:
368 try:
368 aliases, entry = cmdutil.findcmd(self.name, cmdtable)
369 aliases, entry = cmdutil.findcmd(self.name, cmdtable)
@@ -375,11 +376,7 b' class cmdalias(object):'
375 self.shadows = False
376 self.shadows = False
376
377
377 if not self.definition:
378 if not self.definition:
378 def fn(ui, *args):
379 self.badalias = _("no definition for alias '%s'") % self.name
379 ui.warn(_("no definition for alias '%s'\n") % self.name)
380 return -1
381 self.fn = fn
382 self.badalias = True
383 return
380 return
384
381
385 if self.definition.startswith('!'):
382 if self.definition.startswith('!'):
@@ -405,26 +402,17 b' class cmdalias(object):'
405 try:
402 try:
406 args = shlex.split(self.definition)
403 args = shlex.split(self.definition)
407 except ValueError, inst:
404 except ValueError, inst:
408 def fn(ui, *args):
405 self.badalias = (_("error in definition for alias '%s': %s")
409 ui.warn(_("error in definition for alias '%s': %s\n")
406 % (self.name, inst))
410 % (self.name, inst))
411 return -1
412 self.fn = fn
413 self.badalias = True
414 return
407 return
415 self.cmdname = cmd = args.pop(0)
408 self.cmdname = cmd = args.pop(0)
416 args = map(util.expandpath, args)
409 args = map(util.expandpath, args)
417
410
418 for invalidarg in ("--cwd", "-R", "--repository", "--repo", "--config"):
411 for invalidarg in ("--cwd", "-R", "--repository", "--repo", "--config"):
419 if _earlygetopt([invalidarg], args):
412 if _earlygetopt([invalidarg], args):
420 def fn(ui, *args):
413 self.badalias = (_("error in definition for alias '%s': %s may "
421 ui.warn(_("error in definition for alias '%s': %s may only "
414 "only be given on the command line")
422 "be given on the command line\n")
415 % (self.name, invalidarg))
423 % (self.name, invalidarg))
424 return -1
425
426 self.fn = fn
427 self.badalias = True
428 return
416 return
429
417
430 try:
418 try:
@@ -446,8 +434,6 b' class cmdalias(object):'
446
434
447 except error.UnknownCommand:
435 except error.UnknownCommand:
448 def fn(ui, *args):
436 def fn(ui, *args):
449 ui.warn(_("alias '%s' resolves to unknown command '%s'\n") \
450 % (self.name, cmd))
451 try:
437 try:
452 # check if the command is in a disabled extension
438 # check if the command is in a disabled extension
453 commands.help_(ui, cmd, unknowncmd=True)
439 commands.help_(ui, cmd, unknowncmd=True)
@@ -455,16 +441,18 b' class cmdalias(object):'
455 pass
441 pass
456 return -1
442 return -1
457 self.fn = fn
443 self.fn = fn
458 self.badalias = True
444 self.badalias = (_("alias '%s' resolves to unknown command '%s'")
445 % (self.name, cmd))
459 except error.AmbiguousCommand:
446 except error.AmbiguousCommand:
460 def fn(ui, *args):
447 self.badalias = (_("alias '%s' resolves to ambiguous command '%s'")
461 ui.warn(_("alias '%s' resolves to ambiguous command '%s'\n") \
448 % (self.name, cmd))
462 % (self.name, cmd))
463 return -1
464 self.fn = fn
465 self.badalias = True
466
449
467 def __call__(self, ui, *args, **opts):
450 def __call__(self, ui, *args, **opts):
451 if self.badalias:
452 ui.warn(self.badalias + '\n')
453 if self.fn:
454 return self.fn(ui, *args, **opts)
455 return -1
468 if self.shadows:
456 if self.shadows:
469 ui.debug("alias '%s' shadows command '%s'\n" %
457 ui.debug("alias '%s' shadows command '%s'\n" %
470 (self.name, self.cmdname))
458 (self.name, self.cmdname))
@@ -235,7 +235,7 b' def help_(ui, name, unknowncmd=False, fu'
235 rst = []
235 rst = []
236
236
237 # check if it's an invalid alias and display its error if it is
237 # check if it's an invalid alias and display its error if it is
238 if getattr(entry[0], 'badalias', False):
238 if getattr(entry[0], 'badalias', None):
239 if not unknowncmd:
239 if not unknowncmd:
240 ui.pushbuffer()
240 ui.pushbuffer()
241 entry[0](ui)
241 entry[0](ui)
General Comments 0
You need to be logged in to leave comments. Login now