comparison mercurial/debugcommands.py @ 50977:98d1117dc904

debugrevspec: migrate `opts` to native kwargs
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 21 Aug 2023 17:39:22 -0400
parents 56a966bc6b1a
children 36f116820853
comparison
equal deleted inserted replaced
50976:56a966bc6b1a 50977:98d1117dc904
3380 representation or the parsed tree respectively. 3380 representation or the parsed tree respectively.
3381 3381
3382 Use --verify-optimized to compare the optimized result with the unoptimized 3382 Use --verify-optimized to compare the optimized result with the unoptimized
3383 one. Returns 1 if the optimized result differs. 3383 one. Returns 1 if the optimized result differs.
3384 """ 3384 """
3385 opts = pycompat.byteskwargs(opts)
3386 aliases = ui.configitems(b'revsetalias') 3385 aliases = ui.configitems(b'revsetalias')
3387 stages = [ 3386 stages = [
3388 (b'parsed', lambda tree: tree), 3387 (b'parsed', lambda tree: tree),
3389 ( 3388 (
3390 b'expanded', 3389 b'expanded',
3392 ), 3391 ),
3393 (b'concatenated', revsetlang.foldconcat), 3392 (b'concatenated', revsetlang.foldconcat),
3394 (b'analyzed', revsetlang.analyze), 3393 (b'analyzed', revsetlang.analyze),
3395 (b'optimized', revsetlang.optimize), 3394 (b'optimized', revsetlang.optimize),
3396 ] 3395 ]
3397 if opts[b'no_optimized']: 3396 if opts['no_optimized']:
3398 stages = stages[:-1] 3397 stages = stages[:-1]
3399 if opts[b'verify_optimized'] and opts[b'no_optimized']: 3398 if opts['verify_optimized'] and opts['no_optimized']:
3400 raise error.Abort( 3399 raise error.Abort(
3401 _(b'cannot use --verify-optimized with --no-optimized') 3400 _(b'cannot use --verify-optimized with --no-optimized')
3402 ) 3401 )
3403 stagenames = {n for n, f in stages} 3402 stagenames = {n for n, f in stages}
3404 3403
3405 showalways = set() 3404 showalways = set()
3406 showchanged = set() 3405 showchanged = set()
3407 if ui.verbose and not opts[b'show_stage']: 3406 if ui.verbose and not opts['show_stage']:
3408 # show parsed tree by --verbose (deprecated) 3407 # show parsed tree by --verbose (deprecated)
3409 showalways.add(b'parsed') 3408 showalways.add(b'parsed')
3410 showchanged.update([b'expanded', b'concatenated']) 3409 showchanged.update([b'expanded', b'concatenated'])
3411 if opts[b'optimize']: 3410 if opts['optimize']:
3412 showalways.add(b'optimized') 3411 showalways.add(b'optimized')
3413 if opts[b'show_stage'] and opts[b'optimize']: 3412 if opts['show_stage'] and opts['optimize']:
3414 raise error.Abort(_(b'cannot use --optimize with --show-stage')) 3413 raise error.Abort(_(b'cannot use --optimize with --show-stage'))
3415 if opts[b'show_stage'] == [b'all']: 3414 if opts['show_stage'] == [b'all']:
3416 showalways.update(stagenames) 3415 showalways.update(stagenames)
3417 else: 3416 else:
3418 for n in opts[b'show_stage']: 3417 for n in opts['show_stage']:
3419 if n not in stagenames: 3418 if n not in stagenames:
3420 raise error.Abort(_(b'invalid stage name: %s') % n) 3419 raise error.Abort(_(b'invalid stage name: %s') % n)
3421 showalways.update(opts[b'show_stage']) 3420 showalways.update(opts['show_stage'])
3422 3421
3423 treebystage = {} 3422 treebystage = {}
3424 printedtree = None 3423 printedtree = None
3425 tree = revsetlang.parse(expr, lookup=revset.lookupfn(repo)) 3424 tree = revsetlang.parse(expr, lookup=revset.lookupfn(repo))
3426 for n, f in stages: 3425 for n, f in stages:
3427 treebystage[n] = tree = f(tree) 3426 treebystage[n] = tree = f(tree)
3428 if n in showalways or (n in showchanged and tree != printedtree): 3427 if n in showalways or (n in showchanged and tree != printedtree):
3429 if opts[b'show_stage'] or n != b'parsed': 3428 if opts['show_stage'] or n != b'parsed':
3430 ui.write(b"* %s:\n" % n) 3429 ui.write(b"* %s:\n" % n)
3431 ui.write(revsetlang.prettyformat(tree), b"\n") 3430 ui.write(revsetlang.prettyformat(tree), b"\n")
3432 printedtree = tree 3431 printedtree = tree
3433 3432
3434 if opts[b'verify_optimized']: 3433 if opts['verify_optimized']:
3435 arevs = revset.makematcher(treebystage[b'analyzed'])(repo) 3434 arevs = revset.makematcher(treebystage[b'analyzed'])(repo)
3436 brevs = revset.makematcher(treebystage[b'optimized'])(repo) 3435 brevs = revset.makematcher(treebystage[b'optimized'])(repo)
3437 if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose): 3436 if opts['show_set'] or (opts['show_set'] is None and ui.verbose):
3438 ui.writenoi18n( 3437 ui.writenoi18n(
3439 b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n" 3438 b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n"
3440 ) 3439 )
3441 ui.writenoi18n( 3440 ui.writenoi18n(
3442 b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n" 3441 b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n"
3460 ui.write(b' %d\n' % c) 3459 ui.write(b' %d\n' % c)
3461 return 1 3460 return 1
3462 3461
3463 func = revset.makematcher(tree) 3462 func = revset.makematcher(tree)
3464 revs = func(repo) 3463 revs = func(repo)
3465 if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose): 3464 if opts['show_set'] or (opts['show_set'] is None and ui.verbose):
3466 ui.writenoi18n(b"* set:\n", stringutil.prettyrepr(revs), b"\n") 3465 ui.writenoi18n(b"* set:\n", stringutil.prettyrepr(revs), b"\n")
3467 if not opts[b'show_revs']: 3466 if not opts['show_revs']:
3468 return 3467 return
3469 for c in revs: 3468 for c in revs:
3470 ui.write(b"%d\n" % c) 3469 ui.write(b"%d\n" % c)
3471 3470
3472 3471