You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

99 lines
3.3 KiB

  1. """Command line client functionality, broken into a separate file
  2. so it can be more easily tested."""
  3. from __future__ import absolute_import
  4. from nilmdb.printf import *
  5. import nilmdb.client
  6. import time
  7. import sys
  8. import re
  9. import os
  10. import urlparse
  11. import argparse
  12. version = "0.1"
  13. version_string = sprintf("nilmtool %s, client library %s",
  14. version, nilmdb.Client.client_version)
  15. def parse_opts(argv):
  16. formatter = argparse.ArgumentDefaultsHelpFormatter
  17. parser = argparse.ArgumentParser(add_help = False,
  18. formatter_class = formatter)
  19. group = parser.add_argument_group("General options")
  20. group.add_argument("-h", "--help", action='help',
  21. help='show this help message and exit')
  22. group.add_argument("-V", "--version", action="version",
  23. version=version_string)
  24. group.add_argument("-q", "--quiet", action="store_true",
  25. help="suppress unnecessary console output")
  26. group = parser.add_argument_group("Server")
  27. group.add_argument("-u", "--url", action="store",
  28. default="http://localhost:12380/",
  29. help="NilmDB server URL (default: %(default)s)")
  30. sub = parser.add_subparsers(title="Commands",
  31. dest="command",
  32. description="Specify --help after the "
  33. "command for command-specific options.")
  34. # info
  35. cmd = sub.add_parser("info", help="Server information",
  36. formatter_class = formatter,
  37. description="""
  38. List information about the server, like
  39. version.
  40. """)
  41. # list
  42. cmd = sub.add_parser("list", help="List streams",
  43. formatter_class = formatter,
  44. description="""
  45. List streams available in the database,
  46. optionally filtering by type or partial path.
  47. """)
  48. group = cmd.add_argument_group("Stream filtering")
  49. group.add_argument("-t", "--type", metavar="GLOB", default="*",
  50. help="Match only this stream type")
  51. group.add_argument("-p", "--path", metavar="GLOB", default="*",
  52. help="Match only this path")
  53. # group.add_argument(
  54. # parser.add_argument_group(group)
  55. # group = OptionGroup(parser, "Stream Operations")
  56. # group.add_argument("-l", "--list", action="store_true", default=False,
  57. # action="store", dest="url",
  58. # default="http://localhost:12380/",
  59. # help="NilmDB server URL (default: %default)")
  60. # parser.add_argument_group(group)
  61. args = parser.parse_args(argv)
  62. return args
  63. def die(formatstr, *args):
  64. fprintf(sys.stderr, formatstr, *args)
  65. sys.exit(-1)
  66. def run(argv):
  67. args = parse_opts(argv)
  68. client = nilmdb.Client(args.url)
  69. try:
  70. server_version = client.version()
  71. except nilmdb.client.NilmCommError as e:
  72. die("Error connecting to server: %s\n", str(e))
  73. print server_version
  74. print args.url
  75. print args.command
  76. # if not opt.quiet:
  77. # printf("Server URL: %s\n", opt.url)