|
- """Command line client functionality, broken into a separate file
- so it can be more easily tested."""
-
- from __future__ import absolute_import
- from nilmdb.printf import *
- import nilmdb.client
-
- import time
- import sys
- import re
- import os
- import urlparse
- import argparse
-
- version = "0.1"
- version_string = sprintf("nilmtool %s, client library %s",
- version, nilmdb.Client.client_version)
-
- def parse_opts(argv):
- formatter = argparse.ArgumentDefaultsHelpFormatter
- parser = argparse.ArgumentParser(add_help = False,
- formatter_class = formatter)
-
- group = parser.add_argument_group("General options")
- group.add_argument("-h", "--help", action='help',
- help='show this help message and exit')
- group.add_argument("-V", "--version", action="version",
- version=version_string)
- group.add_argument("-q", "--quiet", action="store_true",
- help="suppress unnecessary console output")
-
- group = parser.add_argument_group("Server")
- group.add_argument("-u", "--url", action="store",
- default="http://localhost:12380/",
- help="NilmDB server URL (default: %(default)s)")
-
- sub = parser.add_subparsers(title="Commands",
- dest="command",
- description="Specify --help after the "
- "command for command-specific options.")
-
- # info
- cmd = sub.add_parser("info", help="Server information",
- formatter_class = formatter,
- description="""
- List information about the server, like
- version.
- """)
-
- # list
- cmd = sub.add_parser("list", help="List streams",
- formatter_class = formatter,
- description="""
- List streams available in the database,
- optionally filtering by type or partial path.
- """)
- group = cmd.add_argument_group("Stream filtering")
- group.add_argument("-t", "--type", metavar="GLOB", default="*",
- help="Match only this stream type")
- group.add_argument("-p", "--path", metavar="GLOB", default="*",
- help="Match only this path")
-
-
- # group.add_argument(
-
- # parser.add_argument_group(group)
-
- # group = OptionGroup(parser, "Stream Operations")
- # group.add_argument("-l", "--list", action="store_true", default=False,
- # action="store", dest="url",
- # default="http://localhost:12380/",
- # help="NilmDB server URL (default: %default)")
- # parser.add_argument_group(group)
-
- args = parser.parse_args(argv)
-
- return args
-
- def die(formatstr, *args):
- fprintf(sys.stderr, formatstr, *args)
- sys.exit(-1)
-
- def run(argv):
- args = parse_opts(argv)
-
- client = nilmdb.Client(args.url)
-
- try:
- server_version = client.version()
- except nilmdb.client.NilmCommError as e:
- die("Error connecting to server: %s\n", str(e))
-
- print server_version
- print args.url
- print args.command
-
- # if not opt.quiet:
- # printf("Server URL: %s\n", opt.url)
|