Some useful options

git-svn-id: svn+ssh://localhost/home/henryk/svn/cyberflex-shell/trunk@134 f711b948-2313-0410-aaa9-d29f33439f0b
This commit is contained in:
hploetz 2006-11-21 00:50:56 +00:00
parent 586cc480b8
commit 3f9b79c511
1 changed files with 44 additions and 6 deletions

View File

@ -14,12 +14,13 @@ class Cyberflex_Shell(Shell):
self.reader = 0
Shell.__init__(self, basename)
self.register_commands(self, self.NOCARD_COMMANDS)
self.set_prompt("(No card) ")
def cmd_runscript(self, filename):
def cmd_runscript(self, filename, ask = True):
"Run an APDU script from a file"
fh = file(filename)
doit = False
doit = not ask
ignored_SWs = []
for line in fh:
@ -436,9 +437,28 @@ class Cyberflex_Shell(Shell):
"connect": cmd_connect,
}
OPTIONS = "r:l"
LONG_OPTIONS = ["reader=", "list-readers"]
def usage():
print """Cyberflex shell
Synopsis: cyberflex-shell.py [options] [scriptfiles]
Options:
-r, --reader Select the reader to use, either by
index or by name
-l, --list-readers List the available readers and their
indices
-n, --dont-connect Don't connect to the card on startup
-y, --dont-ask Don't ask for confirmation for every
command run from the scriptfiles
-i, --force-interactive Force interactive mode after running
scripts from the command line
-h, --help This help
"""
OPTIONS = "r:lnyih"
LONG_OPTIONS = ["reader=", "list-readers","dont-connect","dont-ask","force-interactive","help"]
exit_now = False
dont_connect = False
dont_ask = False
force_interactive = False
reader = None
if __name__ == "__main__":
@ -451,6 +471,15 @@ if __name__ == "__main__":
if option in ("-l","--list-readers"):
list_readers()
exit_now = True
if option in ("-h","--help"):
usage()
exit_now = True
if option in ("-n","--dont-connect"):
dont_connect = True
if option in ("-y","--dont-ask"):
dont_ask = True
if option in ("-i","--force-interactive"):
force_interactive = True
if exit_now:
sys.exit()
@ -458,5 +487,14 @@ if __name__ == "__main__":
print "Cyberflex shell"
shell = Cyberflex_Shell("cyberflex-shell")
shell.cmd_connect(reader)
shell.run()
if not dont_connect:
shell.cmd_connect(reader)
shell.run_startup()
for filename in arguments:
shell.cmd_runscript(filename, not dont_ask)
if len(arguments) == 0 or force_interactive:
shell.run()