bitbake-hashserv 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #! /usr/bin/env python3
  2. #
  3. # Copyright (C) 2018 Garmin Ltd.
  4. #
  5. # SPDX-License-Identifier: GPL-2.0-only
  6. #
  7. import os
  8. import sys
  9. import logging
  10. import argparse
  11. import sqlite3
  12. sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)), 'lib'))
  13. import hashserv
  14. VERSION = "1.0.0"
  15. DEFAULT_BIND = 'unix://./hashserve.sock'
  16. def main():
  17. parser = argparse.ArgumentParser(description='Hash Equivalence Reference Server. Version=%s' % VERSION,
  18. epilog='''The bind address is the path to a unix domain socket if it is
  19. prefixed with "unix://". Otherwise, it is an IP address
  20. and port in form ADDRESS:PORT. To bind to all addresses, leave
  21. the ADDRESS empty, e.g. "--bind :8686". To bind to a specific
  22. IPv6 address, enclose the address in "[]", e.g.
  23. "--bind [::1]:8686"'''
  24. )
  25. parser.add_argument('--bind', default=DEFAULT_BIND, help='Bind address (default "%(default)s")')
  26. parser.add_argument('--database', default='./hashserv.db', help='Database file (default "%(default)s")')
  27. parser.add_argument('--log', default='WARNING', help='Set logging level')
  28. args = parser.parse_args()
  29. logger = logging.getLogger('hashserv')
  30. level = getattr(logging, args.log.upper(), None)
  31. if not isinstance(level, int):
  32. raise ValueError('Invalid log level: %s' % args.log)
  33. logger.setLevel(level)
  34. console = logging.StreamHandler()
  35. console.setLevel(level)
  36. logger.addHandler(console)
  37. server = hashserv.create_server(args.bind, args.database)
  38. server.serve_forever()
  39. return 0
  40. if __name__ == '__main__':
  41. try:
  42. ret = main()
  43. except Exception:
  44. ret = 1
  45. import traceback
  46. traceback.print_exc()
  47. sys.exit(ret)