~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Robert Collins
  • Date: 2005-10-07 01:01:07 UTC
  • mfrom: (1185.13.2)
  • Revision ID: robertc@robertcollins.net-20051007010107-fe48434051a15b92
mergeĀ fromĀ upstream

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
# Those objects can specify the expected type of the argument, which
25
25
# would help with validation and shell completion.
26
26
 
27
 
 
28
 
# TODO: Help messages for options.
29
 
 
30
 
# TODO: Define arguments by objects, rather than just using names.
31
 
# Those objects can specify the expected type of the argument, which
32
 
# would help with validation and shell completion.
33
 
 
34
 
 
35
 
# TODO: Help messages for options.
36
 
 
37
 
# TODO: Define arguments by objects, rather than just using names.
38
 
# Those objects can specify the expected type of the argument, which
39
 
# would help with validation and shell completion.
40
 
 
41
 
 
 
27
# TODO: "--profile=cum", to change sort order.  Is there any value in leaving
 
28
# the profile output behind so it can be interactively examined?
42
29
 
43
30
import sys
44
31
import os
368
355
    'root':                   str,
369
356
    'no-backup':              None,
370
357
    'pattern':                str,
 
358
    'remember':               None,
371
359
    }
372
360
 
373
361
SHORT_OPTIONS = {
532
520
def apply_profiled(the_callable, *args, **kwargs):
533
521
    import hotshot
534
522
    import tempfile
 
523
    import hotshot.stats
535
524
    pffileno, pfname = tempfile.mkstemp()
536
525
    try:
537
526
        prof = hotshot.Profile(pfname)
539
528
            ret = prof.runcall(the_callable, *args, **kwargs) or 0
540
529
        finally:
541
530
            prof.close()
542
 
 
543
 
        import hotshot.stats
544
531
        stats = hotshot.stats.load(pfname)
545
 
        #stats.strip_dirs()
546
 
        stats.sort_stats('time')
 
532
        stats.strip_dirs()
 
533
        stats.sort_stats('cum')   # 'time'
547
534
        ## XXX: Might like to write to stderr or the trace file instead but
548
535
        ## print_stats seems hardcoded to stdout
549
536
        stats.print_stats(20)
550
 
 
551
537
        return ret
552
538
    finally:
553
539
        os.close(pffileno)
639
625
def run_bzr_catch_errors(argv):
640
626
    try:
641
627
        try:
642
 
            try:
643
 
                return run_bzr(argv)
644
 
            finally:
645
 
                # do this here inside the exception wrappers to catch EPIPE
646
 
                sys.stdout.flush()
647
 
        #wrap common errors as CommandErrors.
648
 
        except (NotBranchError,), e:
649
 
            raise BzrCommandError(str(e))
 
628
            return run_bzr(argv)
 
629
        finally:
 
630
            # do this here inside the exception wrappers to catch EPIPE
 
631
            sys.stdout.flush()
650
632
    except BzrCommandError, e:
651
633
        # command line syntax error, etc
652
634
        log_error(str(e))
668
650
            bzrlib.trace.note('broken pipe')
669
651
            return 2
670
652
        else:
 
653
            ## import pdb
 
654
            ## pdb.pm()
671
655
            bzrlib.trace.log_exception()
672
656
            return 2
673
657