[GRASS-SVN] r41008 - grass/branches/develbranch_6/lib/python

svn_grass at osgeo.org svn_grass at osgeo.org
Mon Feb 15 01:22:52 EST 2010


Author: cmbarton
Date: 2010-02-15 01:22:52 -0500 (Mon, 15 Feb 2010)
New Revision: 41008

Modified:
   grass/branches/develbranch_6/lib/python/core.py
Log:
Added command_info method. Returns as dictionary all information output from <command> help. Backported from trunk r41007.

Modified: grass/branches/develbranch_6/lib/python/core.py
===================================================================
--- grass/branches/develbranch_6/lib/python/core.py	2010-02-15 06:13:13 UTC (rev 41007)
+++ grass/branches/develbranch_6/lib/python/core.py	2010-02-15 06:22:52 UTC (rev 41008)
@@ -20,6 +20,7 @@
 
 @author Glynn Clements
 @author Martin Landa <landa.martin gmail.com>
+ at author Michael Barton <michael.barton at asu.edu>
 """
 
 import os
@@ -705,3 +706,64 @@
     @return float value
     """
     return sum(float(x) / 60 ** n for (n, x) in enumerate(s.split(':')))
+
+def command_info(cmd):
+    """!Returns 'help' information for any command as dictionary with entries
+    for description, keywords, usage, flags, and parameters"""
+    
+    cmdinfo = {}
+    s = start_command(cmd, 'help', stdout = subprocess.PIPE, stderr = subprocess.PIPE)
+    out, err = s.communicate()
+    
+    # Parameters
+    first, params = err.split('Parameters:')
+    paramlines = params.splitlines()
+    dict = {}
+    for line in paramlines:
+        line = line.strip()
+        if line == '': continue
+        param = line.split(' ',1)[0].strip()
+        pval = line.split(' ',1)[1].strip()
+        dict[param] = pval
+        
+    cmdinfo['parameters'] = dict
+    
+    # Flags
+    first, flags = first.split('Flags:')
+    flaglines = flags.splitlines()
+    dict = {}
+    for line in flaglines:
+        line = line.strip()
+        if line == '': continue
+        flag = line.split(' ',1)[0].strip()
+        fval = line.split(' ',1)[1].strip()
+        dict[flag] = fval
+        
+    cmdinfo['flags'] = dict
+    
+    # Usage
+    first, usage = first.split('Usage:')
+    usagelines = usage.splitlines()
+    list = []
+    for line in usagelines:
+        line = line.strip()+' '
+        if line == '': continue
+        list.append(line)
+        
+    cmdinfo['usage'] = ''.join(list).strip()
+    
+    # Keywords
+    first, keywords = first.split('Keywords:')
+    list = []
+    list = keywords.strip().split(',')
+    cmdinfo['keywords'] = list
+        
+    #Description
+    first, desc = first.split('Description:')
+    desclines = desc.splitlines()
+    for line in desclines:
+        line = line.strip()+' '
+        
+    cmdinfo['description'] = ''.join(desclines).strip()
+            
+    return cmdinfo



More information about the grass-commit mailing list