From: Ian Jackson Date: Sun, 2 Apr 2017 02:50:14 +0000 (+0100) Subject: debug good X-Git-Tag: hippotat/1.0.0~55^2~135 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=hippotat.git;a=commitdiff_plain;h=2cf751456040ff2d071f554be97b62a2ab95f9ef debug good --- diff --git a/hippotat/__init__.py b/hippotat/__init__.py index 0b059e5..bb1f606 100644 --- a/hippotat/__init__.py +++ b/hippotat/__init__.py @@ -413,28 +413,33 @@ def common_startup(): debug_set = set(dfs_less_detailed(debug_def_detail)) def ds_select(od,os, spec, op): - last_df = next(DBG.iterconstants()) - mutator = debug_set.add - for it in spec.split(','): - if not len(it): - for df in dfs_less_detailed(last_df): - mutator(df) - continue - if it.startswith('-'): mutator = debug_set.discard it = it[1:] else: mutator = debug_set.add - - try: - df = DBG.lookupByName(it) - except ValueError: - optparser.error('unknown debug flag %s in --debug-select' % it) - mutator(df) - last_df = df + + if it == '+': + dfs = DBG.iterconstants() + + else: + if it.endswith('+'): + mapper = dfs_less_detailed + it = it[0:len(it)-1] + else: + mapper = lambda x: [x] + + try: + dfspec = DBG.lookupByName(it) + except ValueError: + optparser.error('unknown debug flag %s in --debug-select' % it) + + dfs = mapper(dfspec) + + for df in dfs: + mutator(df) optparser.add_option('-D', '--debug', nargs=0, @@ -445,11 +450,12 @@ def common_startup(): optparser.add_option('--debug-select', nargs=1, type='string', - metavar='[-]DFLAG[,],...', + metavar='[-]DFLAG[+]|[-]+,...', help= -'''enable (or with -, disable) each specified DFLAG; -empty entry means do the same for all DFLAGS "more interesting" -than the last (or, all DFLAGs)''', +'''enable (`-': disable) each specified DFLAG; +`+': do same for all "more interesting" DFLAGSs; +just `+': all DFLAGs. + DFLAGS: ''' + ' '.join([df.name for df in DBG.iterconstants()]), action='callback', callback= ds_select)