17db96d56Sopenharmony_ci#!/usr/bin/env python3
27db96d56Sopenharmony_ci"""Miscellaneous diagnostics for the import system"""
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ciimport sys
57db96d56Sopenharmony_ciimport argparse
67db96d56Sopenharmony_cifrom pprint import pprint
77db96d56Sopenharmony_ci
87db96d56Sopenharmony_cidef _dump_state(args):
97db96d56Sopenharmony_ci    print(sys.version)
107db96d56Sopenharmony_ci    for name in args.attributes:
117db96d56Sopenharmony_ci        print("sys.{}:".format(name))
127db96d56Sopenharmony_ci        pprint(getattr(sys, name))
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cidef _add_dump_args(cmd):
157db96d56Sopenharmony_ci    cmd.add_argument("attributes", metavar="ATTR", nargs="+",
167db96d56Sopenharmony_ci                     help="sys module attribute to display")
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ciCOMMANDS = (
197db96d56Sopenharmony_ci  ("dump", "Dump import state", _dump_state, _add_dump_args),
207db96d56Sopenharmony_ci)
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_cidef _make_parser():
237db96d56Sopenharmony_ci    parser = argparse.ArgumentParser()
247db96d56Sopenharmony_ci    sub = parser.add_subparsers(title="Commands")
257db96d56Sopenharmony_ci    for name, description, implementation, add_args in COMMANDS:
267db96d56Sopenharmony_ci        cmd = sub.add_parser(name, help=description)
277db96d56Sopenharmony_ci        cmd.set_defaults(command=implementation)
287db96d56Sopenharmony_ci        add_args(cmd)
297db96d56Sopenharmony_ci    return parser
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_cidef main(args):
327db96d56Sopenharmony_ci    parser = _make_parser()
337db96d56Sopenharmony_ci    args = parser.parse_args(args)
347db96d56Sopenharmony_ci    return args.command(args)
357db96d56Sopenharmony_ci
367db96d56Sopenharmony_ciif __name__ == "__main__":
377db96d56Sopenharmony_ci    sys.exit(main(sys.argv[1:]))
38