~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Robert Collins
  • Date: 2005-09-29 02:01:49 UTC
  • Revision ID: robertc@robertcollins.net-20050929020149-1ff16722c6a01b2c
reenable remotebranch tests

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
 
# TODO: "--profile=cum", to change sort order.  Is there any value in leaving
28
 
# the profile output behind so it can be interactively examined?
 
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
 
29
35
 
30
36
import sys
31
37
import os
355
361
    'root':                   str,
356
362
    'no-backup':              None,
357
363
    'pattern':                str,
358
 
    'remember':               None,
359
364
    }
360
365
 
361
366
SHORT_OPTIONS = {
520
525
def apply_profiled(the_callable, *args, **kwargs):
521
526
    import hotshot
522
527
    import tempfile
523
 
    import hotshot.stats
524
528
    pffileno, pfname = tempfile.mkstemp()
525
529
    try:
526
530
        prof = hotshot.Profile(pfname)
528
532
            ret = prof.runcall(the_callable, *args, **kwargs) or 0
529
533
        finally:
530
534
            prof.close()
 
535
 
 
536
        import hotshot.stats
531
537
        stats = hotshot.stats.load(pfname)
532
 
        stats.strip_dirs()
533
 
        stats.sort_stats('cum')   # 'time'
 
538
        #stats.strip_dirs()
 
539
        stats.sort_stats('time')
534
540
        ## XXX: Might like to write to stderr or the trace file instead but
535
541
        ## print_stats seems hardcoded to stdout
536
542
        stats.print_stats(20)
 
543
 
537
544
        return ret
538
545
    finally:
539
546
        os.close(pffileno)
564
571
    --profile
565
572
        Run under the Python profiler.
566
573
    """
567
 
    # Load all of the transport methods
568
 
    import bzrlib.transport.local, bzrlib.transport.http
569
574
    
570
575
    argv = [a.decode(bzrlib.user_encoding) for a in argv]
571
576
 
625
630
def run_bzr_catch_errors(argv):
626
631
    try:
627
632
        try:
628
 
            return run_bzr(argv)
629
 
        finally:
630
 
            # do this here inside the exception wrappers to catch EPIPE
631
 
            sys.stdout.flush()
 
633
            try:
 
634
                return run_bzr(argv)
 
635
            finally:
 
636
                # do this here inside the exception wrappers to catch EPIPE
 
637
                sys.stdout.flush()
 
638
        #wrap common errors as CommandErrors.
 
639
        except (NotBranchError,), e:
 
640
            raise BzrCommandError(str(e))
632
641
    except BzrCommandError, e:
633
642
        # command line syntax error, etc
634
643
        log_error(str(e))
650
659
            bzrlib.trace.note('broken pipe')
651
660
            return 2
652
661
        else:
653
 
            ## import pdb
654
 
            ## pdb.pm()
655
662
            bzrlib.trace.log_exception()
656
663
            return 2
657
664
 
 
665
 
658
666
if __name__ == '__main__':
659
667
    sys.exit(main(sys.argv))