| import argparse |
| |
| already_loaded = False |
| kept_context = None |
| |
| def plugin_name(filename): |
| return os.path.splitext(os.path.basename(filename))[0] |
| |
| def plugin_init(plugins): |
| global already_loaded |
| already_loaded = plugin_name(__file__) in (plugin_name(p.__name__) for p in plugins) |
| |
| def print_name(args, config, basepath, workspace): |
| print (__file__) |
| |
| def print_bbdir(args, config, basepath, workspace): |
| print (__file__.replace('/lib/devtool/bbpath.py','')) |
| |
| def print_registered(args, config, basepath, workspace): |
| global kept_context |
| print(kept_context.loaded) |
| |
| def multiloaded(args, config, basepath, workspace): |
| global already_loaded |
| print("yes" if already_loaded else "no") |
| |
| def register_commands(subparsers, context): |
| global kept_context |
| kept_context = context |
| if 'loaded' in context.__dict__: |
| context.loaded += 1 |
| else: |
| context.loaded = 1 |
| |
| def addparser(name, helptxt, func): |
| parser = subparsers.add_parser(name, help=helptxt, |
| formatter_class=argparse.ArgumentDefaultsHelpFormatter) |
| parser.set_defaults(func=func) |
| return parser |
| |
| addparser('pluginfile', 'Print the filename of this plugin', print_name) |
| addparser('bbdir', 'Print the BBPATH directory of this plugin', print_bbdir) |
| addparser('count', 'How many times have this plugin been registered.', print_registered) |
| addparser('multiloaded', 'How many times have this plugin been initialized', multiloaded) |