[Nym3-commit] r119 - trunk/nym3/Client

nym3-devel@lists.noreply.org nym3-devel@lists.noreply.org
Tue, 24 Aug 2004 16:15:01 +0200


Author: jr
Date: 2004-08-24 16:14:59 +0200 (Tue, 24 Aug 2004)
New Revision: 119

Modified:
   trunk/nym3/Client/Main.py
   trunk/nym3/Client/User.py
Log:
- use optparser to read the options/arguments given on the command line (Client.Main.py)
- skeleton of the parser (Client.Main.py)
- change the signature of Client.User.User


Modified: trunk/nym3/Client/Main.py
===================================================================
--- trunk/nym3/Client/Main.py	2004-08-23 18:51:06 UTC (rev 118)
+++ trunk/nym3/Client/Main.py	2004-08-24 14:14:59 UTC (rev 119)
@@ -1,6 +1,6 @@
 import sys
 import os
-import getopt
+from optparse import OptionParser, make_option
 import nym3.Client.User as User
 import nym3.Client.Config as Config
 import nym3.Message as Message
@@ -33,17 +33,72 @@
     except User.AlreadySuchUser:
         return
     nymUser.generate_keys() #TODO how do we stock private key? protect it with a passphrase?
+
+
+
+if __name__ == '__main__':
+    #the one where we set up the parser
+    nym3.Client.Config.DEBUG = False
+    def setDebug(option, opt, value, parser):
+        nym3.Client.Config.DEBUG = True
+    def setUser(option, opt, value, parser):
+        try:
+            nymUser = User.User(value)
+        except:
+            print "the nym account %s does not exist" % value
+            sys.exit(2)
+
+    def setDefaultUser():
+        setUser(None,"",Config.DefaultUser,None)
+
+    def myParseArgs(p,l):
+        ret = p.parse_args(l)
+        if nymUser == None:
+            setDefaultUser()
+        return ret
     
-if __name__ == '__main__':
-    optlist, pholder = getopt.getopt(sys.argv[1:], 'Ds:m:')
-    for o, a in optlist:
-        if o == "-D":
-            nym3.Client.Config.DEBUG = True
+    parser = OptionParser()
+
+    #the one when we determine the user account
+    nymUser = None
+    
+    #TODO put here options common to every command
+    parser.add_option("-D","--debug", action = "callback", callback = setDebug, help = "output message on stdout instead of sending them through mixminion")
+    userOption = make_option("-u","--user", action = "callback", callback = setUser, type = "string", help = "determine the user account to be used, Client.Config.DefaultUser by default")
+    
+    if sys.argv[1] == 'setup':
+        pass
+    #if sys.argv[1] == 'control': #handling of fragments (pipe to mixminion ...
+    #    pass
+    if sys.argv[1] == 'send-surb':
+        parser.usage = "%prog [options]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
+    if sys.argv[1] == 'change-key':
+        parser.usage = "%prog [options]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
+    if sys.argv[1] == 'relay':
+        parser.usage = "%prog [options]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
+    if sys.argv[1] == 'get':
+        parser.usage = "%prog get MsgIdx1 [MsgIdx2 [...]]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
+        #convert the idx given as arguments to mid and send
+    if sys.argv[1] == 'summarize':
+        parser.usage = "%prog [options]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
+    if sys.argv[1] == 'delete':
+        parser.usage = "%prog delete MsgIdx1 [MsgIdx2 [...]]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
+        #convert the idx given as arguments to mid and send
+    if sys.argv[1] == 'policy':
+        parser.usage = "%prog [options]"
+        parser.add_option(userOption)
+        (options, args) = myParseArgs(parser, sys.argv[2:])
         
-    for o, a in optlist:
-        if o == "-s":#setup
-            setUpAccount(a)
-        if o == "-m":#control message
-	    processMessage(sys.stdin.read())
-	    sys.exit(0)
-        
+    

Modified: trunk/nym3/Client/User.py
===================================================================
--- trunk/nym3/Client/User.py	2004-08-23 18:51:06 UTC (rev 118)
+++ trunk/nym3/Client/User.py	2004-08-24 14:14:59 UTC (rev 119)
@@ -10,10 +10,11 @@
 
 class User:
     """Hold user data"""
-    def __init__(self, create = 0):
+    def __init__(self, username, create = 0):
         #TODO what is the criteria determining which account we must load? For the time being we only have a user account
         """0 : load user data throw an error if the account doesn't exist
         1 : create a new account throw an error if it already exist
+        username is of the form <nym>@<server>
         """
         self.home = Config.path + os.sep
         self.datafile = self.home + 'data'