~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

MergeĀ fromĀ jam-integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
447
447
        os.remove(pfname)
448
448
 
449
449
 
450
 
def apply_lsprofiled(the_callable, *args, **kwargs):
 
450
def apply_lsprofiled(filename, the_callable, *args, **kwargs):
451
451
    from bzrlib.lsprof import profile
452
 
    ret,stats = profile(the_callable,*args,**kwargs)
 
452
    import cPickle
 
453
    ret, stats = profile(the_callable, *args, **kwargs)
453
454
    stats.sort()
454
 
    stats.pprint()
 
455
    if filename is None:
 
456
        stats.pprint()
 
457
    else:
 
458
        stats.freeze()
 
459
        cPickle.dump(stats, open(filename, 'w'), 2)
 
460
        print 'Profile data written to %r.' % filename
455
461
    return ret
456
462
 
457
463
def run_bzr(argv):
484
490
    argv = [a.decode(bzrlib.user_encoding) for a in argv]
485
491
 
486
492
    opt_lsprof = opt_profile = opt_no_plugins = opt_builtin = False
 
493
    opt_lsprof_file = None
487
494
 
488
495
    # --no-plugins is handled specially at a very early stage. We need
489
496
    # to load plugins before doing other command parsing so that they
490
497
    # can override commands, but this needs to happen first.
491
498
 
492
 
    for a in argv:
 
499
    argv_copy = []
 
500
    i = 0
 
501
    while i < len(argv):
 
502
        a = argv[i]
493
503
        if a == '--profile':
494
504
            opt_profile = True
495
505
        elif a == '--lsprof':
496
506
            opt_lsprof = True
 
507
        elif a == '--lsprof-file':
 
508
            opt_lsprof_file = argv[i + 1]
 
509
            i += 1
497
510
        elif a == '--no-plugins':
498
511
            opt_no_plugins = True
499
512
        elif a == '--builtin':
501
514
        elif a in ('--quiet', '-q'):
502
515
            be_quiet()
503
516
        else:
504
 
            continue
505
 
        argv.remove(a)
 
517
            argv_copy.append(a)
 
518
        i += 1
506
519
 
 
520
    argv = argv_copy
507
521
    if (not argv) or (argv[0] == '--help'):
508
522
        from bzrlib.help import help
509
523
        if len(argv) > 1:
530
544
 
531
545
    try:
532
546
        if opt_lsprof:
533
 
            ret = apply_lsprofiled(cmd_obj.run_argv, argv)
 
547
            ret = apply_lsprofiled(opt_lsprof_file, cmd_obj.run_argv, argv)
534
548
        elif opt_profile:
535
549
            ret = apply_profiled(cmd_obj.run_argv, argv)
536
550
        else: