You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
venv/PyCharm 2025.2.1.1/plugins/python-ce/helpers/pycharm/appcfg_fetcher.py

63 lines
1.6 KiB

import sys
import optparse
from django_manage_commands_provider import _xml
class Option:
def __init__(self):
self.long = []
self.short = []
self.arg = None
self.help = None
def dump(self, dumper):
dumper.add_command_option(self.long, self.short, self.help, self.arg)
def parse_option_desc(option_desc):
option = Option()
option.short = option_desc._short_opts
option.long = option_desc._long_opts
option.help = option_desc.help
if option_desc.nargs > 0:
option.arg = (option_desc.nargs, option_desc.type)
return option
def get_options(options_parser):
return map(parse_option_desc, options_parser.option_list)
def dump_actions(dumper, app):
common_options = get_options(app._GetOptionParser())
for name, action in app.actions.iteritems():
dumper.start_command(name, action.short_desc)
args = action.usage.split(name.split(' ')[0])[-1].strip()
dumper.set_arguments(args)
for option in common_options:
option.dump(dumper)
if action.options:
parser = optparse.OptionParser(conflict_handler='resolve')
action.options(app, parser)
for option in get_options(parser):
option.dump(dumper)
dumper.close_command()
if __name__ == "__main__":
sys.path.append(sys.argv[1])
import appcfg
try:
appcfg.run_file('appcfg.py', globals())
finally:
app = AppCfgApp(['appcfg.py', 'help'])
dumper = _xml.XmlDumper()
dump_actions(dumper, app)
print(dumper.xml)
sys.exit(0)