| dbtype :: rest =>
case Dbms.lookup dbtype of
NONE => print ("Unknown database type " ^ dbtype ^ ".\n")
- | _ =>
+ | SOME {getpass, ...} =>
case rest of
- ["adduser"] => Main.requestDbUser dbtype
+ ["adduser"] =>
+ let
+ val pass = case getpass of
+ NONE => SOME NONE
+ | SOME f =>
+ case f () of
+ Client.Passwd pass => SOME (SOME pass)
+ | Client.Aborted => SOME NONE
+ | Client.Error => NONE
+ in
+ case pass of
+ NONE => ()
+ | SOME pass => Main.requestDbUser {dbtype = dbtype, passwd = pass}
+ end
+ | ["passwd"] =>
+ let
+ val pass = case getpass of
+ NONE => NONE
+ | SOME f =>
+ case f () of
+ Client.Passwd pass => SOME pass
+ | _ => NONE
+ in
+ case pass of
+ NONE => ()
+ | SOME pass => Main.requestDbPasswd {dbtype = dbtype, passwd = pass}
+ end
+ | ["createdb", dbname] =>
+ if Dbms.validDbname dbname then
+ Main.requestDbTable {dbtype = dbtype, dbname = dbname}
+ else
+ print ("Invalid database name " ^ dbname ^ ".\n")
| _ => print "Invalid command-line arguments\n"