Skip to content

Commit 6b72eb8

Browse files
author
Jonathan Kamens
committed
Define debug_callback code once, rather than in every script
1 parent 3bf1843 commit 6b72eb8

File tree

5 files changed

+23
-68
lines changed

5 files changed

+23
-68
lines changed

delete

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,6 @@ logger = logging.getLogger('delete')
1313
whoami = os.path.basename(sys.argv[0])
1414

1515

16-
def debug_callback(option, opt_str, value, parser):
17-
"""
18-
An OptionParser callback that enables debugging.
19-
"""
20-
all_loggers = [logger.name, 'libdelete']
21-
loggers = [x.strip() for x in value.split(',')]
22-
if value.lower() == 'all':
23-
loggers = all_loggers
24-
else:
25-
if not set(loggers) <= set(all_loggers):
26-
parser.error('Valid debug targets: {0}'.format(
27-
", ".join(all_loggers)))
28-
for l in loggers:
29-
logging.getLogger(l).setLevel(logging.DEBUG)
30-
31-
3216
def ask(question, *args, **kwargs):
3317
"""
3418
Ask a question, possibly prepended with the name of the program
@@ -162,7 +146,7 @@ def main():
162146
parser.add_option(
163147
"--debug", action="callback", type='string',
164148
help="Enable debugging (logger target or 'all')",
165-
callback=debug_callback, metavar='target')
149+
callback=libdelete.make_debug_callback(logger), metavar='target')
166150
(options, args) = parser.parse_args()
167151
if options.filesonly and options.directoriesonly:
168152
parser.error("-F and -D are mutually exclusive")

expunge

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,6 @@ logger = logging.getLogger('expunge')
1919
whoami = os.path.basename(sys.argv[0])
2020

2121

22-
def debug_callback(option, opt_str, value, parser):
23-
"""
24-
An OptionParser callback that enables debugging.
25-
"""
26-
all_loggers = [logger.name, 'libdelete']
27-
loggers = [x.strip() for x in value.split(',')]
28-
if value.lower() == 'all':
29-
loggers = all_loggers
30-
else:
31-
if not set(loggers) <= set(all_loggers):
32-
parser.error('Valid debug targets: {0}'.format(
33-
", ".join(all_loggers)))
34-
for l in loggers:
35-
logging.getLogger(l).setLevel(logging.DEBUG)
36-
37-
3822
def ask(question, *args, **kwargs):
3923
"""
4024
Ask a question, possibly prepended with the name of the program
@@ -144,7 +128,7 @@ def parse_options():
144128
parser.add_option(
145129
"--debug", action="callback", type='string',
146130
help="Enable debugging (logger target or 'all')",
147-
callback=debug_callback, metavar='target')
131+
callback=libdelete.make_debug_callback(logger), metavar='target')
148132
(options, args) = parser.parse_args()
149133
if options.noop:
150134
# -n implies -v

libdelete.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,25 @@ class DeleteError(Exception):
2323
pass
2424

2525

26+
def make_debug_callback(logger):
27+
def debug_callback(option, opt_str, value, parser):
28+
"""
29+
An OptionParser callback that enables debugging.
30+
"""
31+
all_loggers = [logger.name, 'libdelete']
32+
loggers = [x.strip() for x in value.split(',')]
33+
if value.lower() == 'all':
34+
loggers = all_loggers
35+
else:
36+
if not set(loggers) <= set(all_loggers):
37+
parser.error('Valid debug targets: {0}'.format(
38+
", ".join(all_loggers)))
39+
for l in loggers:
40+
logging.getLogger(l).setLevel(logging.DEBUG)
41+
42+
return debug_callback
43+
44+
2645
def perror(message, **kwargs):
2746
"""
2847
Format an error message, log it in the debug log

lsdel

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,6 @@ logger = logging.getLogger('lsdel')
1212
whoami = os.path.basename(sys.argv[0])
1313

1414

15-
def debug_callback(option, opt_str, value, parser):
16-
"""
17-
An OptionParser callback that enables debugging.
18-
"""
19-
all_loggers = [logger.name, 'libdelete']
20-
loggers = [x.strip() for x in value.split(',')]
21-
if value.lower() == 'all':
22-
loggers = all_loggers
23-
else:
24-
if not set(loggers) <= set(all_loggers):
25-
parser.error('Valid debug targets: {0}'.format(
26-
", ".join(all_loggers)))
27-
for l in loggers:
28-
logging.getLogger(l).setLevel(logging.DEBUG)
29-
30-
3115
def parse_options():
3216
parser = optparse.OptionParser(usage="%prog [options] filename ...")
3317
parser.add_option(
@@ -57,7 +41,7 @@ def parse_options():
5741
parser.add_option(
5842
"--debug", action="callback", type='string',
5943
help="Enable debugging (logger target or 'all')",
60-
callback=debug_callback, metavar='target')
44+
callback=libdelete.make_debug_callback(logger), metavar='target')
6145
(options, args) = parser.parse_args()
6246
if options.singlecolumn and options.multicolumn:
6347
parser.error("-C and -1 are mutually exclusive")

undelete

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,6 @@ logger = logging.getLogger('undelete')
1313
whoami = os.path.basename(sys.argv[0])
1414

1515

16-
def debug_callback(option, opt_str, value, parser):
17-
"""
18-
An OptionParser callback that enables debugging.
19-
"""
20-
all_loggers = [logger.name, 'libdelete']
21-
loggers = [x.strip() for x in value.split(',')]
22-
if value.lower() == 'all':
23-
loggers = all_loggers
24-
else:
25-
if not set(loggers) <= set(all_loggers):
26-
parser.error('Valid debug targets: {0}'.format(
27-
", ".join(all_loggers)))
28-
for l in loggers:
29-
logging.getLogger(l).setLevel(logging.DEBUG)
30-
31-
3216
def ask(question, *args, **kwargs):
3317
"""
3418
Ask a question, possibly prepended with the name of the program
@@ -140,7 +124,7 @@ def main():
140124
parser.add_option(
141125
"--debug", action="callback", type='string',
142126
help="Enable debugging (logger target or 'all')",
143-
callback=debug_callback, metavar='target')
127+
callback=libdelete.make_debug_callback(logger), metavar='target')
144128
(options, args) = parser.parse_args()
145129
if options.recursive and options.dirsonly:
146130
parser.error("-r and -R are mutually exclusive")

0 commit comments

Comments
 (0)