|
1 | | -from optparse import OptionParser, OptionGroup, HelpFormatter |
| 1 | +from optparse import Option, OptionParser, OptionGroup, HelpFormatter |
2 | 2 | import shlex |
3 | 3 | import sys |
4 | 4 | import os |
|
8 | 8 | from semmle.util import VERSION |
9 | 9 |
|
10 | 10 |
|
| 11 | +DEFAULT_AUTOBUILDER_FLAGS = {"R", "c", "v", "verbosity", "z"} |
| 12 | + |
| 13 | + |
| 14 | +class RecordingOption(Option): |
| 15 | + def process(self, opt, value, values, parser): |
| 16 | + flag = (self._short_opts or self._long_opts)[0].lstrip("-") |
| 17 | + if flag not in DEFAULT_AUTOBUILDER_FLAGS: |
| 18 | + parser.extractor_flags.add(flag) |
| 19 | + return Option.process(self, opt, value, values, parser) |
| 20 | + |
| 21 | + |
11 | 22 | def make_parser(): |
12 | 23 | '''Parse command_line, returning options, arguments''' |
13 | | - parser = OptionParser(add_help_option=False, version='%s' % VERSION) |
| 24 | + parser = OptionParser(option_class=RecordingOption, add_help_option=False, version='%s' % VERSION) |
| 25 | + parser.extractor_flags = set() |
14 | 26 |
|
15 | 27 | import_options = OptionGroup(parser, "Import following options", |
16 | 28 | description="Note that -a -n -g and -t are included for backwards compatibility. They are ignored") |
@@ -172,6 +184,7 @@ def parse(command_line): |
172 | 184 | setattr(options, attr, dval) |
173 | 185 | args.extend(extra_args) |
174 | 186 | del options.file |
| 187 | + options.extractor_flags = sorted(parser.extractor_flags) |
175 | 188 | if options.help: |
176 | 189 | if options.verbose: |
177 | 190 | for opt in parser._get_all_options(): |
|
0 commit comments