diff options
Diffstat (limited to 'find-all-obnam-errors')
-rwxr-xr-x | find-all-obnam-errors | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/find-all-obnam-errors b/find-all-obnam-errors deleted file mode 100755 index 602ae990..00000000 --- a/find-all-obnam-errors +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014-2015 Lars Wirzenius -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -# =*= License: GPL-3+ =*= - - -import imp -import inspect -import os - -import cliapp - -import obnamlib -import obnamlib.plugins - - -def get_modules(module): - objs = [getattr(module, name) for name in dir(module)] - return [x for x in objs if inspect.ismodule(x)] - - -def get_modules_recursively(module): - result = [] - queue = get_modules(module) - while queue: - item = queue.pop() - if item not in result: - result.append(item) - queue.extend(get_modules(item)) - return result - - -def get_obnam_errors(module): - - def is_obnam_error(obj): - return (type(obj) is type and - issubclass(x, obnamlib.ObnamError) and - hasattr(x, 'msg')) - - objs = [getattr(module, name) for name in dir(module)] - return [x for x in objs if is_obnam_error(x)] - - -all_modules = get_modules_recursively(obnamlib) - -# This is a bit of magic to load all the modules that contain plugins. -def find_plugin_modules(*args): - for module_filename in app.pluginmgr.plugin_files: - module_name, ext = os.path.splitext(os.path.basename(module_filename)) - with open(module_filename) as f: - module = imp.load_module(module_name, f, module_filename, - ('.py', 'r', imp.PY_SOURCE)) - all_modules.append(module) - - -# This is a terrible kludge. -app = obnamlib.App() -app.process_args = find_plugin_modules -app.run() - -template = '''\ -{id} ({class_name}): {msg} -''' - -error_classes = set() -for module in set(all_modules): - for error_class in get_obnam_errors(module): - error_classes.add(error_class) - -def class_name(error_class): - return error_class.__name__ - -for error_class in sorted(error_classes, key=class_name): - e = error_class() - print template.format( - class_name=class_name(error_class), - id=e.id, - msg=e.msg, - ), |