summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/gemato17
-rw-r--r--gemato/cli.py47
-rw-r--r--setup.py1
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)
diff --git a/setup.py b/setup.py
index 832d174..1f0df84 100644
--- a/setup.py
+++ b/setup.py
@@ -14,6 +14,7 @@ setup(
url='http://github.com/mgorny/gemato',
packages=['gemato'],
+ scripts=['bin/gemato'],
classifiers=[
'Development Status :: 2 - Pre-Alpha',