diff options
-rwxr-xr-x | bin/gemato | 17 | ||||
-rw-r--r-- | gemato/cli.py | 47 | ||||
-rw-r--r-- | setup.py | 1 |
3 files changed, 65 insertions, 0 deletions
diff --git a/bin/gemato b/bin/gemato new file mode 100755 index 0000000..93eda61 --- /dev/null +++ b/bin/gemato @@ -0,0 +1,17 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 +# (c) 2017 Michał Górny +# Licensed under the terms of 2-clause BSD license + +import logging +import os.path +import sys + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) + +from gemato.cli import main + + +if __name__ == '__main__': + logging.getLogger().setLevel(logging.INFO) + sys.exit(main(sys.argv)) diff --git a/gemato/cli.py b/gemato/cli.py new file mode 100644 index 0000000..5c1885b --- /dev/null +++ b/gemato/cli.py @@ -0,0 +1,47 @@ +# gemato: CLI routines +# vim:fileencoding=utf-8 +# (c) 2017 Michał Górny +# Licensed under the terms of 2-clause BSD license + +from __future__ import print_function + +import argparse +import logging +import timeit + +import gemato.find_top_level +import gemato.recursiveloader + + +def do_verify(args): + for p in args.paths: + tlm = gemato.find_top_level.find_top_level_manifest(p) + if tlm is None: + logging.error('Top-level Manifest not found in {}'.format(p)) + return 1 + + start = timeit.default_timer() + m = gemato.recursiveloader.ManifestRecursiveLoader(tlm) + try: + m.assert_directory_verifies() + except gemato.exceptions.ManifestMismatch as e: + logging.error(str(e)) + return 1 + + stop = timeit.default_timer() + logging.info('{} validated in {:.2f} seconds'.format(p, stop - start)) + + +def main(argv): + argp = argparse.ArgumentParser( + prog=argv[0], + description='Gentoo Manifest Tool') + subp = argp.add_subparsers() + + verify = subp.add_parser('verify') + verify.add_argument('paths', nargs='*', default=['.'], + help='Paths to verify (defaults to "." if none specified)') + verify.set_defaults(func=do_verify) + + vals = argp.parse_args(argv[1:]) + return vals.func(vals) @@ -14,6 +14,7 @@ setup( url='http://github.com/mgorny/gemato', packages=['gemato'], + scripts=['bin/gemato'], classifiers=[ 'Development Status :: 2 - Pre-Alpha', |