Skip to content

Commit 7c6b68b

Browse files
committed
doc: man: Generate labgrid-client manpage using sphinx-argparse
The old process was to manually duplicate information between the argparse struct in labgrid/remote/client.py and man/labgrid-client.rst which would then be translated to a manpage in man/labgrid-client.1 using rst2man and also tracked in version control. The man/labgrid-client.rst file was also sourced in doc/man/client.rst for sphinx to build html documentation of the labgrid-client cli documentation. Due to this duplication, labgrid-client command documentation was incomplete and inconsistend with argparse documentation accessible via the -h switch. Use sphinx-argparse to generate usage info from the argparse struct returned by get_parser() in labgrid/remote/client.py as part of doc/man/client.rst. Move documentation missing from the argparse struct from man/labgrid-client.1 to doc/man/client.rst. Generate both html cli documentation as well as the manpage from that. Future changes in subcommands and arguments of labgrid-client need only be documented in the argparse struct but more expansive documentation that includes markup can be added to the manpage, even to specific subcommands via the rst in doc/man. Signed-off-by: Jonas Rebmann <[email protected]>
1 parent 2ebf3b0 commit 7c6b68b

File tree

3 files changed

+30
-141
lines changed

3 files changed

+30
-141
lines changed

doc/conf.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@
4040
'sphinx.ext.napoleon',
4141
'sphinx.ext.coverage',
4242
'sphinx.ext.viewcode',
43+
'sphinxarg.ext', # sphinx-argparse
4344
'sphinx.ext.autosectionlabel',
4445
'sphinx_rtd_theme']
4546

47+
suppress_warnings = ['autosectionlabel.*']
48+
4649
# Add any paths that contain templates here, relative to this directory.
4750
templates_path = ['.templates']
4851

@@ -196,7 +199,8 @@
196199
'vxi11',
197200
'pysnmp',
198201
'kasa',
199-
'kasa.iot']
202+
'kasa.iot',
203+
]
200204

201205
# -- Options for autosection ----------------------------------------------
202206
autosectionlabel_prefix_document = True

doc/man/client.rst

Lines changed: 24 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,36 @@
11
.. _labgrid-client:
22

3-
================
4-
labgrid-client
5-
================
3+
labgrid-client
4+
==============
65

7-
labgrid-client interface to control boards
8-
==========================================
6+
Labgrid is a scalable infrastructure and test architecture for embedded (linux) systems.
97

10-
SYNOPSIS
11-
--------
8+
This is the client to control a boards status and interface with it on remote machines.
129

13-
``labgrid-client`` ``--help``
10+
.. currentmodule:: labgrid.remote.client
1411

15-
``labgrid-client`` -p <place> <command>
1612

17-
``labgrid-client`` ``places|resources``
13+
.. argparse::
14+
:module: labgrid.remote.client
15+
:func: get_parser
16+
:prog: labgrid-client
1817

19-
DESCRIPTION
20-
-----------
21-
Labgrid is a scalable infrastructure and test architecture for embedded (linux) systems.
2218

23-
This is the client to control a boards status and interface with it on remote machines.
19+
help : @skip
20+
skip.
2421

25-
OPTIONS
26-
-------
27-
-h, --help
28-
display command line help
29-
-p PLACE, --place PLACE
30-
specify the place to operate on
31-
-x ADDRESS, --coordinator ADDRESS
32-
coordinator ``HOST[:PORT]`` to connect to, defaults to ``127.0.0.1:20408``
33-
-c CONFIG, --config CONFIG
34-
set the configuration file
35-
-s STATE, --state STATE
36-
set an initial state before executing a command, requires a configuration
37-
file and strategy
38-
-i INITIAL_STATE, --initial-state INITIAL_STATE
39-
strategy state to force into before switching to desired state, requires a
40-
desired state (``-s``/``--state``/``LG_STATE``)
41-
-d, --debug
42-
enable debugging
43-
-v, --verbose
44-
increase verbosity
45-
-P PROXY, --proxy PROXY
46-
proxy connections over ssh
47-
48-
CONFIGURATION FILE
22+
complete : @skip
23+
skip.
24+
25+
available subcommands : @skip
26+
skip.
27+
28+
29+
Configuration File
4930
------------------
5031
The configuration file follows the description in ``labgrid-device-config``\(5).
5132

52-
ENVIRONMENT VARIABLES
33+
Environment Variables
5334
---------------------
5435
Various labgrid-client commands use the following environment variable:
5536

@@ -112,112 +93,15 @@ LG_AGENT_PREFIX
11293
Add a prefix to ``.labgrid_agent_{agent_hash}.py`` allowing specification for
11394
where on the exporter it should be uploaded to.
11495

115-
MATCHES
96+
Matches
11697
-------
11798
Match patterns are used to assign a resource to a specific place. The format is:
11899
exporter/group/cls/name, exporter is the name of the exporting machine, group is
119100
a name defined within the exporter, cls is the class of the exported resource
120101
and name is its name. Wild cards in match patterns are explicitly allowed, *
121102
matches anything.
122103

123-
LABGRID-CLIENT COMMANDS
124-
-----------------------
125-
``monitor`` Monitor events from the coordinator
126-
127-
``resources (r)`` List available resources
128-
129-
``places (p)`` List available places
130-
131-
``who`` List acquired places by user
132-
133-
``show`` Show a place and related resources
134-
135-
``create`` Add a new place (name supplied by -p parameter)
136-
137-
``delete`` Delete an existing place
138-
139-
``add-alias`` ``[alias]`` Add an alias to a place
140-
141-
``del-alias`` ``[alias]`` Delete an alias from a place
142-
143-
``set-comment`` ``[comment]`` Update or set the place comment
144-
145-
``set-tags`` ``[key=value]`` Set place tags (key=value)
146-
147-
``add-match`` ``[match]`` Add one (or multiple) match pattern(s) to a place, see MATCHES
148-
149-
``del-match`` ``[match]`` Delete one (or multiple) match pattern(s) from a place, see MATCHES
150-
151-
``add-named-match`` ``[match]`` ``[name]`` Add one match pattern with a name to a place
152-
153-
``acquire (lock)`` Acquire a place
154-
155-
``allow`` ``[user]`` Allow another user to access a place
156-
157-
``release (unlock)`` Release a place
158-
159-
``release-from`` ``[host/user]`` Atomically release a place, but only if acquired by a specific user.
160-
161-
Note that this command returns success as long
162-
as the specified user no longer owns the place,
163-
meaning it may be acquired by another user or
164-
not at all.
165-
166-
``env`` Generate a labgrid environment file for a place
167-
168-
``power (pw)`` ``[action]`` Change (or get) a place's power status, where action is one of get, on, off, cycle
169-
170-
``io`` ``[action]`` ``[name]`` Interact with GPIO (OneWire, relays, ...) devices, where action is one of high, low, get
171-
172-
``console (con)`` ``[name]`` Connect to the console
173-
174-
``dfu`` ``[arg]`` Run dfu commands
175-
176-
``fastboot`` ``[arg]`` Run fastboot with argument
177-
178-
``flashscript`` ``[script]`` ``[arg]`` Run arbitrary script with arguments to flash device
179-
180-
``bootstrap`` ``[filename]`` Start a bootloader
181-
182-
``sd-mux`` ``[action]`` Switch USB SD Muxer, where action is one of dut (device-under-test), host, off
183-
184-
``usb-mux`` ``[action]`` Switch USB Muxer, where action is one of off, dut-device, host-dut, host-device, host-dut+host-device
185-
186-
``ssh`` ``[command]`` Connect via SSH. Additional arguments are passed to ssh.
187-
188-
``scp`` ``[source]`` ``[destination]`` Transfer file via scp (use ':dir/file' for the remote side)
189-
190-
``rsync`` ``[source]`` ``[destination]`` Transfer files via rsync (use ':dir/file' for the remote side)
191-
192-
``sshfs`` ``[remotepath]`` ``[mountpoint]`` Mount a remote path via sshfs
193-
194-
``forward`` Forward local port to remote target
195-
196-
``telnet`` Connect via telnet
197-
198-
``video`` Start a video stream
199-
200-
``audio`` Start an audio stream
201-
202-
``tmc`` ``[command]`` Control a USB TMC device
203-
204-
``write-files`` ``[filename(s)]`` Copy files onto mass storage device
205-
206-
``write-image`` ``[filename]`` Write images onto block devices (USBSDMux, USB Sticks, …)
207-
208-
``reserve`` ``[filter]`` Create a reservation
209-
210-
``cancel-reservation`` ``[token]`` Cancel a pending reservation
211-
212-
``wait`` ``[token]`` Wait for a reservation to be allocated
213-
214-
``reservations`` List current reservations
215-
216-
``export`` ``[filename]`` Export driver information to file (needs environment with drivers)
217-
218-
``version`` Print the labgrid version
219-
220-
ADDING NAMED RESOURCES
104+
Adding Named Resources
221105
----------------------
222106
If a target contains multiple Resources of the same type, named matches need to
223107
be used to address the individual resources. In addition to the `match` taken by
@@ -229,7 +113,7 @@ given.
229113
If one of the resources should be used by default when no resource name is
230114
explicitly specified, it can be named ``default``.
231115

232-
EXAMPLES
116+
Examples
233117
--------
234118

235119
To retrieve a list of places run:
@@ -257,7 +141,7 @@ Add all resources with the group "example-group" to the place example-place:
257141
258142
$ labgrid-client -p example-place add-match */example-group/*/*
259143
260-
SEE ALSO
144+
See Also
261145
--------
262146

263147
``labgrid-exporter``\(1)

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ dynamic = ["version"] # via setuptools_scm
5656
doc = [
5757
"sphinx_rtd_theme>=1.0.0",
5858
"Sphinx>=2.0.0",
59+
"sphinx-argparse",
5960
]
6061
docker = ["docker>=5.0.2"]
6162
graph = ["graphviz>=0.17.0"]

0 commit comments

Comments
 (0)