qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Niteesh G . S ." <niteesh.gs@gmail.com>,
	Cleber Rosa <crosa@redhat.com>, John Snow <jsnow@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>
Subject: [PATCH 36/42] scripts/qmp-shell: convert usage comment to docstring
Date: Mon,  7 Jun 2021 16:06:43 -0400	[thread overview]
Message-ID: <20210607200649.1840382-37-jsnow@redhat.com> (raw)
In-Reply-To: <20210607200649.1840382-1-jsnow@redhat.com>

The nice usage comment should be a docstring instead of a comment, so
that it's visible from other python tooling.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 scripts/qmp/qmp-shell | 128 ++++++++++++++++++++++++------------------
 1 file changed, 72 insertions(+), 56 deletions(-)

diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 8d5845ab48..82fe16cff8 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -1,7 +1,5 @@
 #!/usr/bin/env python3
 #
-# Low-level QEMU shell on top of QMP.
-#
 # Copyright (C) 2009, 2010 Red Hat Inc.
 #
 # Authors:
@@ -10,60 +8,78 @@
 # This work is licensed under the terms of the GNU GPL, version 2.  See
 # the COPYING file in the top-level directory.
 #
-# Usage:
-#
-# Start QEMU with:
-#
-# # qemu [...] -qmp unix:./qmp-sock,server
-#
-# Run the shell:
-#
-# $ qmp-shell ./qmp-sock
-#
-# Commands have the following format:
-#
-#    < command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ]
-#
-# For example:
-#
-# (QEMU) device_add driver=e1000 id=net1
-# {u'return': {}}
-# (QEMU)
-#
-# key=value pairs also support Python or JSON object literal subset notations,
-# without spaces. Dictionaries/objects {} are supported as are arrays [].
-#
-#    example-command arg-name1={'key':'value','obj'={'prop':"value"}}
-#
-# Both JSON and Python formatting should work, including both styles of
-# string literal quotes. Both paradigms of literal values should work,
-# including null/true/false for JSON and None/True/False for Python.
-#
-#
-# Transactions have the following multi-line format:
-#
-#    transaction(
-#    action-name1 [ arg-name1=arg1 ] ... [arg-nameN=argN ]
-#    ...
-#    action-nameN [ arg-name1=arg1 ] ... [arg-nameN=argN ]
-#    )
-#
-# One line transactions are also supported:
-#
-#    transaction( action-name1 ... )
-#
-# For example:
-#
-#     (QEMU) transaction(
-#     TRANS> block-dirty-bitmap-add node=drive0 name=bitmap1
-#     TRANS> block-dirty-bitmap-clear node=drive0 name=bitmap0
-#     TRANS> )
-#     {"return": {}}
-#     (QEMU)
-#
-# Use the -v and -p options to activate the verbose and pretty-print options,
-# which will echo back the properly formatted JSON-compliant QMP that is being
-# sent to QEMU, which is useful for debugging and documentation generation.
+
+"""
+Low-level QEMU shell on top of QMP.
+
+usage: qmp-shell [-h] [-H] [-N] [-v] [-p] qmp_server
+
+positional arguments:
+  qmp_server            < UNIX socket path | TCP address:port >
+
+optional arguments:
+  -h, --help            show this help message and exit
+  -H, --hmp             Use HMP interface
+  -N, --skip-negotiation
+                        Skip negotiate (for qemu-ga)
+  -v, --verbose         Verbose (echo commands sent and received)
+  -p, --pretty          Pretty-print JSON
+
+
+Start QEMU with:
+
+# qemu [...] -qmp unix:./qmp-sock,server
+
+Run the shell:
+
+$ qmp-shell ./qmp-sock
+
+Commands have the following format:
+
+   < command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ]
+
+For example:
+
+(QEMU) device_add driver=e1000 id=net1
+{'return': {}}
+(QEMU)
+
+key=value pairs also support Python or JSON object literal subset notations,
+without spaces. Dictionaries/objects {} are supported as are arrays [].
+
+   example-command arg-name1={'key':'value','obj'={'prop':"value"}}
+
+Both JSON and Python formatting should work, including both styles of
+string literal quotes. Both paradigms of literal values should work,
+including null/true/false for JSON and None/True/False for Python.
+
+
+Transactions have the following multi-line format:
+
+   transaction(
+   action-name1 [ arg-name1=arg1 ] ... [arg-nameN=argN ]
+   ...
+   action-nameN [ arg-name1=arg1 ] ... [arg-nameN=argN ]
+   )
+
+One line transactions are also supported:
+
+   transaction( action-name1 ... )
+
+For example:
+
+    (QEMU) transaction(
+    TRANS> block-dirty-bitmap-add node=drive0 name=bitmap1
+    TRANS> block-dirty-bitmap-clear node=drive0 name=bitmap0
+    TRANS> )
+    {"return": {}}
+    (QEMU)
+
+Use the -v and -p options to activate the verbose and pretty-print options,
+which will echo back the properly formatted JSON-compliant QMP that is being
+sent to QEMU, which is useful for debugging and documentation generation.
+"""
+
 import argparse
 import ast
 import json
-- 
2.31.1



  parent reply	other threads:[~2021-06-07 20:27 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-07 20:06 [PATCH 00/42] python: move qmp-shell into qemu.qmp package John Snow
2021-06-07 20:06 ` [PATCH 01/42] scripts/qmp-shell: apply isort rules John Snow
2021-06-07 20:06 ` [PATCH 02/42] scripts/qmp-shell: Apply flake8 rules John Snow
2021-06-07 20:06 ` [PATCH 03/42] scripts/qmp-shell: fix show_banner signature John Snow
2021-06-07 20:06 ` [PATCH 04/42] scripts/qmp-shell: fix exception handling John Snow
2021-06-07 20:06 ` [PATCH 05/42] scripts/qmp-shell: fix connect method signature John Snow
2021-06-07 20:06 ` [PATCH 06/42] scripts/qmp-shell: remove shadowed variable from _print() John Snow
2021-06-07 20:06 ` [PATCH 07/42] scripts/qmp-shell: use @classmethod where appropriate John Snow
2021-06-07 20:06 ` [PATCH 08/42] scripts/qmp-shell: Use python3-style super() John Snow
2021-06-07 20:06 ` [PATCH 09/42] scripts/qmp-shell: declare verbose in __init__ John Snow
2021-06-07 20:06 ` [PATCH 10/42] scripts/qmp-shell: use triple-double-quote docstring style John Snow
2021-06-07 20:06 ` [PATCH 11/42] scripts/qmp-shell: ignore visit_Name name John Snow
2021-06-07 20:06 ` [PATCH 12/42] scripts/qmp-shell: make QMPCompleter returns explicit John Snow
2021-06-07 20:06 ` [PATCH 13/42] scripts/qmp-shell: rename one and two-letter variables John Snow
2021-06-07 20:06 ` [PATCH 14/42] scripts/qmp-shell: fix shell history exception handling John Snow
2021-06-07 20:06 ` [PATCH 15/42] scripts/qmp-shell: remove if-raise-else patterns John Snow
2021-06-07 20:06 ` [PATCH 16/42] scripts/qmp-shell: use isinstance() instead of type() John Snow
2021-06-07 20:06 ` [PATCH 17/42] scripts/qmp-shell: use argparse John Snow
2021-06-07 20:06 ` [PATCH 18/42] scripts/qmp-shell: Add pretty attribute to HMP shell John Snow
2021-06-07 20:06 ` [PATCH 19/42] scripts/qmp-shell: Make verbose a public attribute John Snow
2021-06-07 20:06 ` [PATCH 20/42] scripts/qmp-shell: move get_prompt() to prompt property John Snow
2021-06-07 20:06 ` [PATCH 21/42] scripts/qmp-shell: remove prompt argument from read_exec_command John Snow
2021-06-07 20:06 ` [PATCH 22/42] scripts/qmp-shell: move the REPL functionality into QMPShell John Snow
2021-06-07 20:06 ` [PATCH 23/42] scripts/qmp-shell: Fix "FuzzyJSON" parser John Snow
2021-06-07 20:06 ` [PATCH 24/42] scripts/qmp-shell: refactor QMPCompleter John Snow
2021-06-07 20:06 ` [PATCH 25/42] scripts/qmp-shell: initialize completer early John Snow
2021-06-07 20:06 ` [PATCH 26/42] python/qmp: add QMPObject type alias John Snow
2021-06-07 20:06 ` [PATCH 27/42] scripts/qmp-shell: add mypy types John Snow
2021-06-07 20:06 ` [PATCH 28/42] scripts/qmp-shell: Accept SocketAddrT instead of string John Snow
2021-06-07 20:06 ` [PATCH 29/42] scripts/qmp-shell: unprivatize 'pretty' property John Snow
2021-06-07 20:06 ` [PATCH 30/42] python/qmp: return generic type from context manager John Snow
2021-06-07 20:06 ` [PATCH 31/42] scripts/qmp-shell: Use context manager instead of atexit John Snow
2021-06-07 20:06 ` [PATCH 32/42] scripts/qmp-shell: use logging to show warnings John Snow
2021-06-07 20:06 ` [PATCH 33/42] scripts/qmp-shell: remove TODO John Snow
2021-06-07 20:06 ` [PATCH 34/42] scripts/qmp-shell: Fix empty-transaction invocation John Snow
2021-06-07 20:06 ` [PATCH 35/42] scripts/qmp-shell: Remove too-broad-exception John Snow
2021-06-07 20:06 ` John Snow [this message]
2021-06-07 20:06 ` [PATCH 37/42] scripts/qmp-shell: remove double-underscores John Snow
2021-06-07 20:06 ` [PATCH 38/42] scripts/qmp-shell: make QMPShellError inherit QMPError John Snow
2021-06-07 20:06 ` [PATCH 39/42] scripts/qmp-shell: add docstrings John Snow
2021-06-07 20:06 ` [PATCH 40/42] scripts/qmp-shell: move to python/qemu/qmp/qmp_shell.py John Snow
2021-06-07 20:06 ` [PATCH 41/42] python: add qmp-shell entry point John Snow
2021-06-07 20:06 ` [PATCH 42/42] scripts/qmp-shell: add redirection shim John Snow
2021-06-14 18:09 ` [PATCH 00/42] python: move qmp-shell into qemu.qmp package John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210607200649.1840382-37-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=armbru@redhat.com \
    --cc=crosa@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=niteesh.gs@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).