annotate commons/pyRepetUnit/components/AbstractProgramLauncher.py @ 18:94ab73e8a190

Uploaded
author m-zytnicki
date Mon, 29 Apr 2013 03:20:15 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
1 #!/usr/bin/env python
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
2 ##@file
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
3 # Abstract class to launch a program.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
4
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
5 import getopt
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
6 import sys
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
7 import os
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
8 import pyRepet.launcher.AbstractProgramLauncher
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
9
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
10 class AbstractProgramLauncher( pyRepet.launcher.AbstractProgramLauncher.AbstractProgramLauncher ): #( IProgramLauncher )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
11
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
12 def getHelpAsString( self ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
13 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
14 Return the generic help as a string.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
15 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
16 string = ""
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
17 string += "usage: %s.py [options]" % ( type(self).__name__ )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
18 string += "\ngeneric options:"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
19 string += "\n -h: this help"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
20 string += "\n -i: name of the input file (format='%s')" % ( self.getFormatInputFile() )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
21 string += "\n -c: clean"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
22 string += "\n -v: verbosity level (default=0/1)"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
23 return string
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
24
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
25 def setAttributesFromCmdLine( self, o, a="" ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
26 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
27 Set a generic attribute from the command-line arguments.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
28 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
29 if o == "-h":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
30 print self.getHelpAsString()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
31 sys.exit(0)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
32 elif o == "-i":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
33 self.setInputFile( a )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
34 elif o == "-c":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
35 self.setClean()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
36 elif o == "-v":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
37 self.setVerbosityLevel( a )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
38
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
39 def checkAttributesFromCmdLine( self ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
40 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
41 Set the attributes from the command-line arguments.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
42 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
43 try:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
44 opts, args = getopt.getopt( sys.argv[1:], "%s" % (self.getCmdLineOptions()) )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
45 except getopt.GetoptError, err:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
46 print str(err);
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
47 print self.getHelpAsString()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
48 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
49 for o, a in opts:
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
50 self.setAttributesFromCmdLine( o, a )
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
51
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
52 def getCmdLineOptions(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
53 return self._cmdLineGenericOptions
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
54
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
55 def check( self ):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
56 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
57 Check the generic attributes before running the program.
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
58 """
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
59 self._checkProgramName()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
60 self.checkInput()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
61
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
62 def checkInput(self):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
63 if self.getInputFile() == "":
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
64 string = "ERROR: missing input file"
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
65 print string
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
66 print self.getHelpAsString()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
67 sys.exit(1)
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
68
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
69 if not os.path.exists(self.getInputFile()):
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
70 string = "ERROR: input file '%s' doesn't exist" % (self.getInputFile())
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
71 print string
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
72 print self.getHelpAsString()
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
73 sys.exit(1)