[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-2.11 v2 1/5] qmp-shell: Use optparse module
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PATCH for-2.11 v2 1/5] qmp-shell: Use optparse module |
Date: |
Tue, 8 Aug 2017 17:39:31 -0300 |
It makes command-line parsing and generation of help text much
simpler.
The optparse module is deprecated since Python 2.7, but argparse
is not available in Python 2.6 (the minimum Python version
required for building QEMU).
Signed-off-by: Eduardo Habkost <address@hidden>
---
Changes v1 -> v2:
* Use optparse module, as the minimum Python version for building
QEMU is 2.6
* Reported-by: Stefan Hajnoczi <address@hidden>
* Suggested-by: "Daniel P. Berrange" <address@hidden>
---
scripts/qmp/qmp-shell | 63 +++++++++++++++++++--------------------------------
1 file changed, 23 insertions(+), 40 deletions(-)
diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 860ffb2..ad72ef9 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -73,6 +73,7 @@ import sys
import os
import errno
import atexit
+import optparse
class QMPCompleter(list):
def complete(self, text, state):
@@ -393,52 +394,34 @@ def die(msg):
sys.stderr.write('ERROR: %s\n' % msg)
sys.exit(1)
-def fail_cmdline(option=None):
- if option:
- sys.stderr.write('ERROR: bad command-line option \'%s\'\n' % option)
- sys.stderr.write('qmp-shell [ -v ] [ -p ] [ -H ] [ -N ] < UNIX socket
path> | < TCP address:port >\n')
- sys.stderr.write(' -v Verbose (echo command sent and received)\n')
- sys.stderr.write(' -p Pretty-print JSON\n')
- sys.stderr.write(' -H Use HMP interface\n')
- sys.stderr.write(' -N Skip negotiate (for qemu-ga)\n')
- sys.exit(1)
-
def main():
- addr = ''
- qemu = None
- hmp = False
- pretty = False
- verbose = False
- negotiate = True
+ parser = optparse.OptionParser(description='QMP shell utility')
+ parser.set_usage("%prog [options] <UNIX socket path> | <TCP address:port>")
+ parser.add_option('-v', action='store_true', dest='verbose',
+ help='Verbose (echo command sent and received)')
+ parser.add_option('-p', action='store_true', dest='pretty',
+ help='Pretty-print JSON')
+ parser.add_option('-H', action='store_true', dest='hmp',
+ help='Use HMP interface')
+ parser.add_option('-N', action='store_false', dest='negotiate',
+ default=True, help='Skip negotiate (for qemu-ga)')
+ opts,args = parser.parse_args()
+
+ if len(args) != 1:
+ parser.print_help(sys.stderr)
+ sys.exit(1)
+ addr = args[0]
try:
- for arg in sys.argv[1:]:
- if arg == "-H":
- if qemu is not None:
- fail_cmdline(arg)
- hmp = True
- elif arg == "-p":
- pretty = True
- elif arg == "-N":
- negotiate = False
- elif arg == "-v":
- verbose = True
- else:
- if qemu is not None:
- fail_cmdline(arg)
- if hmp:
- qemu = HMPShell(arg)
- else:
- qemu = QMPShell(arg, pretty)
- addr = arg
-
- if qemu is None:
- fail_cmdline()
+ if opts.hmp:
+ qemu = HMPShell(addr)
+ else:
+ qemu = QMPShell(addr, opts.pretty)
except QMPShellBadPort:
die('bad port number in command-line')
try:
- qemu.connect(negotiate)
+ qemu.connect(opts.negotiate)
except qmp.QMPConnectError:
die('Didn\'t get QMP greeting message')
except qmp.QMPCapabilitiesError:
@@ -447,7 +430,7 @@ def main():
die('Could not connect to %s' % addr)
qemu.show_banner()
- qemu.set_verbosity(verbose)
+ qemu.set_verbosity(opts.verbose)
while qemu.read_exec_command(qemu.get_prompt()):
pass
qemu.close()
--
2.9.4
[Qemu-devel] [PATCH for-2.11 v2 2/5] qmp-shell: Pass split cmdargs to __build_cmd(), Eduardo Habkost, 2017/08/08
[Qemu-devel] [PATCH for-2.11 v2 3/5] qmp-shell: execute_cmdargs() method, Eduardo Habkost, 2017/08/08
[Qemu-devel] [PATCH for-2.11 v2 4/5] qmp-shell: Accept QMP command as argument, Eduardo Habkost, 2017/08/08