diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2016-08-08 16:03:02 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2016-08-08 17:07:13 -0400 |
commit | 597b1d6e39039066ce51e4c02d74ed6545ffccdf (patch) | |
tree | 535605fa822704c447ed94d9e89c4f28d23b6a5b /verhawk/cli/verhawk.py | |
parent | 9f6283fd7e9085154345fceeb01f66e5c50a4a2d (diff) | |
download | verhawk-0.0.1.tar.gz |
Refactor into a package; Add RELIC 1.0.50.0.1
Diffstat (limited to 'verhawk/cli/verhawk.py')
-rw-r--r-- | verhawk/cli/verhawk.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/verhawk/cli/verhawk.py b/verhawk/cli/verhawk.py new file mode 100644 index 0000000..bf69dab --- /dev/null +++ b/verhawk/cli/verhawk.py @@ -0,0 +1,61 @@ +import argparse +import importlib +import os +import sys +import verhawk.scanner +import verhawk.constants as constants + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument('parent_package') + parser.add_argument('-V', '--version', + action='store_true', + help='Display version information'), + parser.add_argument('-e', '--exclude', + action='append', + default=[], + help='Ignore sub-[package|module] by name.') + parser.add_argument('-v', '--verbose', + action='store_true', + help='Show packages without version data.') + parser.add_argument('-j', '--json', + action='store_true', + help='Emit JSON to stdout') + parser.add_argument('-p', '--packages-only', + action='store_true', + help='Ignore non-packages (i.e modules)') + parser.add_argument('-r', '--recursive', + action='store_true', + help='Descend into package looking for additional version data.') + + args = parser.parse_args() + + if args.version: + print(verhawk.version.__version_long__) + exit(0) + + try: + with open(os.devnull, 'w') as devnull: + sys.stdout = devnull + parent_package = importlib.import_module(args.parent_package) + + sys.stdout = constants.STDOUT + except ImportError as e: + print(e, file=sys.stderr) + exit(1) + + scanner = verhawk.scanner.Scanner(parent_package, args.exclude, + args.recursive, args.packages_only) + + if args.json: + print(scanner.as_json()) + else: + for pkg, version in sorted(scanner): + if not args.verbose and version is None: + continue + + print('{0}={1}'.format(pkg, version)) + +if __name__ == '__main__': + main() |