10
0
mirror of https://gitlab.com/scemama/irpf90.git synced 2024-06-01 10:55:19 +02:00
irpf90/src/command_line.py

94 lines
2.3 KiB
Python
Raw Normal View History

2009-09-02 20:45:53 +02:00
#!/usr/bin/python
import getopt, sys
from version import version
description = "IRPF90 Fortran preprocessor."
options = {}
options['d'] = [ 'debug' , 'Activate debug', 0 ]
options['v'] = [ 'version' , 'Print version of irpf90', 0 ]
options['a'] = [ 'assert' , 'Activate assertions', 0 ]
options['h'] = [ 'help' , 'Print this help', 0 ]
options['o'] = [ 'openmp' , 'Activate openMP', 0 ]
options['c'] = [ 'check_cycles' , 'Check cycles in dependencies', 0 ]
options['i'] = [ 'init' , 'Initialize current directory', 0 ]
class CommandLine(object):
def __init__(self):
2009-09-03 00:46:11 +02:00
self._opts = None
2009-09-02 20:45:53 +02:00
2009-09-03 00:46:11 +02:00
executable_name = sys.argv[0]
2009-09-02 20:45:53 +02:00
def usage(self):
t = """
$EXE - $DESCR
Usage:
$EXE [OPTION]
Options:
"""
t = t.replace("$EXE",self.executable_name)
t = t.replace("$DESCR",description)
print t
sorted = options.keys()
sorted.sort()
for o in sorted:
print " -%s , --%15s : %s"%(o,options[o][0].ljust(15),options[o][1])
if options[o][2] == 1:
print " Requires an argument"
print ""
print "Version : ", version
print ""
def opts(self):
2009-09-03 00:46:11 +02:00
if self._opts is None:
optlist = ["",[]]
for o in options.keys():
b = [o]+options[o]
if b[3] == 1:
b[0] = b[0]+":"
b[1] = b[1]+"="
optlist[0] += b[0]
optlist[1] += [b[1]]
try:
self._opts, args = getopt.getopt(sys.argv[1:], optlist[0], optlist[1])
except getopt.GetoptError, err:
# print help information and exit:
self.usage()
print str(err) # will print something like "option -a not recognized"
sys.exit(2)
return self._opts
opts = property(fget=opts)
2009-09-02 20:45:53 +02:00
t = """
def do_$LONG(self):
2009-09-03 00:46:11 +02:00
try:
x = self._do_$LONG
except AttributeError:
self._do_$LONG = False
for o,a in self.opts:
if o in ("-$SHORT", "--$LONG"):
self._do_$LONG = True
break
return self._do_$LONG
do_$LONG = property(fget=do_$LONG)
2009-09-02 20:45:53 +02:00
"""
for short in options.keys():
long = options[short][0]
exec t.replace("$LONG",long).replace("$SHORT",short)
def do_run(self):
2009-09-03 00:46:11 +02:00
try:
x = self._do_run
except AttributeError:
self._do_run = not (self.do_version or self.do_init)
return self._do_run
do_run = property(fget=do_run)
2009-09-02 20:45:53 +02:00
command_line = CommandLine()