mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-10-31 00:06:02 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			110 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| """
 | |
| ***************************************************************************
 | |
|     versioncheck.py
 | |
|     ---------------------
 | |
|     Date                 : December 2014
 | |
|     Copyright            : (C) 2014 by Victor Olaya
 | |
|     Email                : volayaf at gmail dot com
 | |
| ***************************************************************************
 | |
| *                                                                         *
 | |
| *   This program is free software; you can redistribute it and/or modify  *
 | |
| *   it under the terms of the GNU General Public License as published by  *
 | |
| *   the Free Software Foundation; either version 2 of the License, or     *
 | |
| *   (at your option) any later version.                                   *
 | |
| *                                                                         *
 | |
| ***************************************************************************
 | |
| """
 | |
| 
 | |
| __author__ = 'Victor Olaya'
 | |
| __date__ = 'December 2014'
 | |
| __copyright__ = '(C) 2014, Victor Olaya'
 | |
| 
 | |
| # This will get replaced with a git SHA1 when you do a git archive
 | |
| 
 | |
| __revision__ = '$Format:%H$'
 | |
| 
 | |
| 
 | |
| import os
 | |
| import subprocess
 | |
| 
 | |
| 
 | |
| def getAlgParams(f):
 | |
|     params = []
 | |
|     booleanparams = []
 | |
|     numparams = []
 | |
|     lines = open(f)
 | |
|     line = lines.readline().strip('\n').strip()
 | |
|     name = line
 | |
|     if '|' in name:
 | |
|         tokens = name.split('|')
 | |
|         cmdname = tokens[1]
 | |
|     else:
 | |
|         cmdname = name
 | |
|     line = lines.readline().strip('\n').strip()
 | |
|     group = line
 | |
|     line = lines.readline().strip('\n').strip()
 | |
|     while line != '':
 | |
|         if line.startswith('Hardcoded'):
 | |
|             pass
 | |
|         elif line.startswith('AllowUnmatching'):
 | |
|             pass
 | |
|         elif line.startswith('Extent'):
 | |
|             extentParamNames = line[6:].strip().split(' ')
 | |
|             params.extend(["-" + p for p in extentParamNames])
 | |
|         else:
 | |
|             tokens = line.split("|")
 | |
|             if tokens[0] == "ParameterBoolean":
 | |
|                 booleanparams.append("-" + tokens[1].strip())
 | |
|             elif tokens[0] == "ParameterNumber":
 | |
|                 numparams.append("-" + tokens[1].strip())
 | |
|             else:
 | |
|                 params.append("-" + tokens[1])
 | |
|         line = lines.readline().strip('\n').strip()
 | |
|     lines.close()
 | |
|     return cmdname, group, params, booleanparams, numparams
 | |
| 
 | |
| 
 | |
| def testDescriptionFile(f):
 | |
|     usage = ""
 | |
|     cmdname, group, params, booleanparams, numparams = getAlgParams(f)
 | |
|     command = [r'd:\saga2.1.2\saga_cmd.exe', group, cmdname]
 | |
|     for p in params:
 | |
|         command.append(p)
 | |
|         command.append("dummy")
 | |
|     for p in numparams:
 | |
|         command.append(p)
 | |
|         command.append("0")
 | |
|     command.extend(booleanparams)
 | |
|     proc = subprocess.Popen(
 | |
|         command,
 | |
|         shell=True,
 | |
|         stdout=subprocess.PIPE,
 | |
|         stdin=open(os.devnull),
 | |
|         stderr=subprocess.STDOUT,
 | |
|         universal_newlines=True,
 | |
|     ).stdout
 | |
|     lines = []
 | |
|     for line in iter(proc.readline, ''):
 | |
|         lines.append(line)
 | |
|         if "Usage" in line:
 | |
|             usage = line
 | |
| 
 | |
|     if usage and not lines[0].startswith("_"):
 | |
|         print "-" * 50
 | |
|         print f + " [ERROR]"
 | |
|         print lines
 | |
|         print usage
 | |
|         print "Name in description:" + cmdname
 | |
|         print "Parameters in description:" + unicode(params)
 | |
|         print "-" * 50
 | |
|         print
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     folder = os.path.join(os.path.dirname(__file__), "description")
 | |
|     for descriptionFile in os.listdir(folder):
 | |
|         if descriptionFile.endswith('txt'):
 | |
|             testDescriptionFile(os.path.join(folder, descriptionFile))
 |