<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/23606">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">docs/shell.rst: Auto-generate shell comamnd reference<br><br>We use a slightly modified version of sphinx-argparse<br>(with patch https://github.com/alex-rudakov/sphinx-argparse/pull/136 applied)<br>in order to generate the command reference for each shell command in the<br>manual.<br><br>As the upstream repository seems unmaintained for ~2 years, let's use<br>the osmcoom 'fork' with that above-mentioned patch applied.<br><br>Change-Id: I134f267cf53c7ecbc8cbfb33a8766d63bf4a8582<br>---<br>M contrib/jenkins.sh<br>M docs/conf.py<br>M docs/shell.rst<br>3 files changed, 55 insertions(+), 21 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/06/23606/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh</span><br><span>index efb913e..60061e3 100755</span><br><span>--- a/contrib/jenkins.sh</span><br><span>+++ b/contrib/jenkins.sh</span><br><span>@@ -21,6 +21,7 @@</span><br><span> # attempt to build documentation</span><br><span> pip install sphinx</span><br><span> pip install sphinxcontrib-napoleon</span><br><span style="color: hsl(120, 100%, 40%);">+pip3 install -e 'git+https://github.com/osmocom/sphinx-argparse@master#egg=sphinx-argparse'</span><br><span> (cd docs && make html)</span><br><span> </span><br><span> # run the test with physical cards</span><br><span>diff --git a/docs/conf.py b/docs/conf.py</span><br><span>index add26d8..2117172 100644</span><br><span>--- a/docs/conf.py</span><br><span>+++ b/docs/conf.py</span><br><span>@@ -29,6 +29,7 @@</span><br><span> # ones.</span><br><span> extensions = [</span><br><span>         "sphinx.ext.autodoc",</span><br><span style="color: hsl(120, 100%, 40%);">+        "sphinxarg.ext",</span><br><span>         "sphinx.ext.autosectionlabel",</span><br><span>         "sphinx.ext.napoleon"</span><br><span> ]</span><br><span>diff --git a/docs/shell.rst b/docs/shell.rst</span><br><span>index 314f633..6d3375f 100644</span><br><span>--- a/docs/shell.rst</span><br><span>+++ b/docs/shell.rst</span><br><span>@@ -85,32 +85,41 @@</span><br><span> </span><br><span> change_chv</span><br><span> ~~~~~~~~~~</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This command allows you to change a CHV (PIN).</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.change_chv_parser</span><br><span> </span><br><span> </span><br><span> disable_chv</span><br><span> ~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.disable_chv_parser</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-This command allows you to disable a CHV (PIN).</span><br><span> </span><br><span> enable_chv</span><br><span> ~~~~~~~~~~</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-This command allows you to enable a CHV (PIN).</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.enable_chv_parser</span><br><span> </span><br><span> </span><br><span> unblock_chv</span><br><span> ~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.unblock_chv_parser</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-This command allows you to unblock a CHV (PIN) using the PUK.</span><br><span> </span><br><span> verify_chv</span><br><span> ~~~~~~~~~~</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> This command allows you to verify a CHV (PIN), which is how the specifications call</span><br><span> it if you authenticate yourself with the said CHV/PIN.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.verify_chv_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> </span><br><span> pySim commands</span><br><span>@@ -128,30 +137,26 @@</span><br><span> </span><br><span> dir</span><br><span> ~~~</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-::</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  usage: dir [-h] [--fids] [--names] [--apps] [--all]</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  Show a listing of files available in currently selected DF or MF</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  optional arguments:</span><br><span style="color: hsl(0, 100%, 40%);">-    -h, --help  show this help message and exit</span><br><span style="color: hsl(0, 100%, 40%);">-    --fids      Show file identifiers</span><br><span style="color: hsl(0, 100%, 40%);">-    --names     Show file names</span><br><span style="color: hsl(0, 100%, 40%);">-    --apps      Show applications</span><br><span style="color: hsl(0, 100%, 40%);">-    --all       Show all selectable identifiers and names</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: PySimCommands.dir_parser</span><br><span> </span><br><span> </span><br><span> export</span><br><span> ~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: PySimCommands.export_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> tree</span><br><span> ~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> verify_adm</span><br><span> ~~~~~~~~~~</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+FIXME</span><br><span> </span><br><span> </span><br><span> Linear Fixed EF commands</span><br><span>@@ -161,15 +166,30 @@</span><br><span> </span><br><span> read_record</span><br><span> ~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: LinFixedEF.ShellCommands.read_rec_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> read_record_decoded</span><br><span> ~~~~~~~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: LinFixedEF.ShellCommands.read_rec_dec_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> update_record</span><br><span> ~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: LinFixedEF.ShellCommands.upd_rec_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> update_record_decoded</span><br><span> ~~~~~~~~~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: LinFixedEF.ShellCommands.upd_rec_dec_parser</span><br><span> </span><br><span> </span><br><span> </span><br><span>@@ -181,15 +201,27 @@</span><br><span> </span><br><span> read_binary</span><br><span> ~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: TransparentEF.ShellCommands.read_bin_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> read_binary_decoded</span><br><span> ~~~~~~~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+Read + decode data from a transparent EF</span><br><span> </span><br><span> update_binary</span><br><span> ~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: TransparentEF.ShellCommands.upd_bin_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> update_binary_decoded</span><br><span> ~~~~~~~~~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim.filesystem</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: TransparentEF.ShellCommands.upd_bin_dec_parser</span><br><span> </span><br><span> </span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/23606">change 23606</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/pysim/+/23606"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: pysim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I134f267cf53c7ecbc8cbfb33a8766d63bf4a8582 </div>
<div style="display:none"> Gerrit-Change-Number: 23606 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>