blob: c907221d049c52947761b6b6eea903854e1e1d8d [file] [log] [blame]
Nick Coghland0bb6aa2012-04-25 22:17:54 +10001#!/usr/bin/env python3
2"""Miscellaneous diagnostics for the import system"""
3
4import sys
5import argparse
6from pprint import pprint
7
8def _dump_state(args):
9 print(sys.version)
Nick Coghlanec5cf092012-04-29 17:58:24 +100010 for name in args.attributes:
11 print("sys.{}:".format(name))
12 pprint(getattr(sys, name))
13
14def _add_dump_args(cmd):
15 cmd.add_argument("attributes", metavar="ATTR", nargs="+",
16 help="sys module attribute to display")
Nick Coghland0bb6aa2012-04-25 22:17:54 +100017
18COMMANDS = (
Nick Coghlanec5cf092012-04-29 17:58:24 +100019 ("dump", "Dump import state", _dump_state, _add_dump_args),
Nick Coghland0bb6aa2012-04-25 22:17:54 +100020)
21
22def _make_parser():
23 parser = argparse.ArgumentParser()
24 sub = parser.add_subparsers(title="Commands")
Nick Coghlanec5cf092012-04-29 17:58:24 +100025 for name, description, implementation, add_args in COMMANDS:
Nick Coghland0bb6aa2012-04-25 22:17:54 +100026 cmd = sub.add_parser(name, help=description)
27 cmd.set_defaults(command=implementation)
Nick Coghlanec5cf092012-04-29 17:58:24 +100028 add_args(cmd)
Nick Coghland0bb6aa2012-04-25 22:17:54 +100029 return parser
30
31def main(args):
32 parser = _make_parser()
33 args = parser.parse_args(args)
34 return args.command(args)
35
36if __name__ == "__main__":
37 sys.exit(main(sys.argv[1:]))