<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="NO-BOK" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">As a side note:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">The shell script output of v.db.connect is not “parsable” like in g.region (n=...) either.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">However, it is well formatted as a kind of table output...<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Cheers<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Stefan<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri",sans-serif"> grass-dev [mailto:grass-dev-bounces@lists.osgeo.org]
<b>On Behalf Of </b>Jachym Cepicky<br>
<b>Sent:</b> 22. august 2016 22:43<br>
<b>To:</b> Vaclav Petras <wenzeslaus@gmail.com><br>
<b>Cc:</b> grass-dev@lists.osgeo.org<br>
<b>Subject:</b> Re: [GRASS-dev] g.search.module: shell style output<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US">Vasku,<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">IIRC, "-g" flag was introduced first time in 2007 for g.region module and only reason for taking "g" letter was, that "s" for "shell script" was taken (or some similar reason). AFAIK there was never defined official GRASS
 rule for using -g flag for parsable output as well as how the output should look like - people simple started to adopt it (like usually in GRASS).<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">Putting rule to developer guidelines for parsable output as well as promoting the "-g" flag for all modules would certainly be an option<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">Jachym<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">po 22. 8. 2016 v 4:39 odesílatel Vaclav Petras <</span><a href="mailto:wenzeslaus@gmail.com"><span lang="EN-US">wenzeslaus@gmail.com</span></a><span lang="EN-US">> napsal:<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">On Fri, Aug 19, 2016 at 2:15 AM, Jachym Cepicky <</span><a href="mailto:jachym.cepicky@gmail.com" target="_blank"><span lang="EN-US">jachym.cepicky@gmail.com</span></a><span lang="EN-US">> wrote:<o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">no special reason for not listing the module description too, just did not came to my mind<o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">Thanks. Good to know.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">Just do it [1]<o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span lang="EN-US"><br>
While using the modified version, I actually realized that "shell script style" usually produces key-value pairs which can which can be evaluated by shell's eval or grass.script.parse_command. Not all modules comply with this, e.g. `g.extension -g` produces
 multiple key-values with same keys and order matters, so this must be parsed in a special way. The result is actually exactly the information g.search.modules is producing:<br>
<br>
$ g.extension -g<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">...<br>
name=v.habitat.dem<br>
description=Calculates DEM derived characteristics of habitats.<br>
keywords=vector,raster,terrain,statistics,sun,zonal statistics<br>
name=v.in.gbif<br>
description=importing of GBIF species distribution data<br>
keywords=vector,geometry<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span lang="EN-US">`g.extension -l` produces list of modules in the same way as currently `g.search.modules -g` produces:<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US"><br>
$ g.extension -l<br>
<br>
v.habitat.dem<br>
v.in.gbif<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">As a result, I don't know what to do with -g, at this point I would just replace the letter by -n (names only) or -s (short output with names only) and add -t for table output (that's in the
 attached patch). -g can go to renamed options for compatibility reasons for now.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">For the future, we should try to keep in mind that g.extension and g.search.module should have unified interfaces and/or outputs. And more generally, we should define what -g "shell script style" means.<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span lang="EN-US"> <o:p></o:p></span></p>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">J <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span lang="EN-US">[1] </span><a href="https://www.youtube.com/watch?v=ZXsQAXx_ao0" target="_blank"><span lang="EN-US">https://www.youtube.com/watch?v=ZXsQAXx_ao0</span></a><span lang="EN-US"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span lang="EN-US">čt 18. 8. 2016 v 20:32 odesílatel Vaclav Petras <</span><a href="mailto:wenzeslaus@gmail.com" target="_blank"><span lang="EN-US">wenzeslaus@gmail.com</span></a><span lang="EN-US">> napsal:<o:p></o:p></span></p>
</div>
<div>
<div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">Hi Jachym,<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">the g.search.module -g flag (shell style output) outputs just names. Do you have a particular reason for it? My use case is something like that:<br>
<br>
g.search.modules keyword="support" -g | sed -e "s/|[^|]*$//g" | sed -e "s/|/\t/g"<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span lang="EN-US">with the following desired output (name + keywords, description removed by sed):<o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US"><br>
g.version    general,support,citing,copyright,version,license<br>
t.support    temporal,metadata,time<br>
r.support    raster,metadata<br>
r.support.stats    raster,statistics<br>
r.out.gdal    raster,export<br>
v.out.ogr    vector,export,OGR<br>
r3.support    raster3d,metadata,voxel<br>
g.findetc    general,map management,scripts<br>
v.external    vector,import,external,OGR,PostGIS<br>
g.message    general,support,scripts<br>
g.tempfile    general,support,scripts<br>
v.support    vector,metadata<br>
r.external    raster,import,external<br>
<br>
I can actually see that outputting just module names can be advantageous in some cases. But I want to get something like, so I can throw sed and grep on it:<br>
<br>
v.support|vector,metadata|Updates vector map metadata.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-US">If we permit change of the interface, I think -g could do the output above. This would make the -g output more like the others: same information as by default and with -j, so we can even consider
 it fixing a bug.<br>
<br>
The current output with -g can be generated with some other flag. -n* for "names only" perhaps?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal">Best,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Vaclav<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><br>
* <a href="https://lists.osgeo.org/pipermail/grass-dev/2016-August/081556.html" target="_blank">
https://lists.osgeo.org/pipermail/grass-dev/2016-August/081556.html</a><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</body>
</html>