Commit | Line | Data |
---|---|---|
d541c618 AC |
1 | (* HCoop Domtool (http://hcoop.sourceforge.net/) |
2 | * Copyright (c) 2006, Adam Chlipala | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU General Public License | |
6 | * as published by the Free Software Foundation; either version 2 | |
7 | * of the License, or (at your option) any later version. | |
8 | * | |
9 | * This program is distributed in the hope that it will be useful, | |
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | * GNU General Public License for more details. | |
13 | * | |
14 | * You should have received a copy of the GNU General Public License | |
15 | * along with this program; if not, write to the Free Software | |
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
17 | *) | |
18 | ||
19 | (* Driver for dbtool *) | |
20 | ||
f6c112c3 AC |
21 | fun badArgs () = |
22 | print "Invalid command-line arguments. See documentation at:\n\thttp://wiki.hcoop.net/MemberManual/Databases\n" | |
23 | ||
d541c618 AC |
24 | val _ = |
25 | case CommandLine.arguments () of | |
f6c112c3 | 26 | [] => badArgs () |
d541c618 AC |
27 | | dbtype :: rest => |
28 | case Dbms.lookup dbtype of | |
29 | NONE => print ("Unknown database type " ^ dbtype ^ ".\n") | |
21d921a5 | 30 | | SOME {getpass, ...} => |
d541c618 | 31 | case rest of |
21d921a5 AC |
32 | ["adduser"] => |
33 | let | |
34 | val pass = case getpass of | |
35 | NONE => SOME NONE | |
36 | | SOME f => | |
37 | case f () of | |
38 | Client.Passwd pass => SOME (SOME pass) | |
39 | | Client.Aborted => SOME NONE | |
40 | | Client.Error => NONE | |
41 | in | |
42 | case pass of | |
43 | NONE => () | |
44 | | SOME pass => Main.requestDbUser {dbtype = dbtype, passwd = pass} | |
45 | end | |
86aa5de7 AC |
46 | | ["passwd"] => |
47 | let | |
48 | val pass = case getpass of | |
49 | NONE => NONE | |
50 | | SOME f => | |
51 | case f () of | |
52 | Client.Passwd pass => SOME pass | |
53 | | _ => NONE | |
54 | in | |
55 | case pass of | |
56 | NONE => () | |
57 | | SOME pass => Main.requestDbPasswd {dbtype = dbtype, passwd = pass} | |
58 | end | |
90dd48df AC |
59 | | ["createdb", dbname] => |
60 | if Dbms.validDbname dbname then | |
61 | Main.requestDbTable {dbtype = dbtype, dbname = dbname} | |
62 | else | |
63 | print ("Invalid database name " ^ dbname ^ ".\n") | |
35659203 AC |
64 | | ["dropdb", dbname] => |
65 | if Dbms.validDbname dbname then | |
66 | Main.requestDbDrop {dbtype = dbtype, dbname = dbname} | |
67 | else | |
68 | print ("Invalid database name " ^ dbname ^ ".\n") | |
99cc4144 AC |
69 | | ["grant", dbname] => |
70 | if Dbms.validDbname dbname then | |
71 | Main.requestDbGrant {dbtype = dbtype, dbname = dbname} | |
72 | else | |
73 | print ("Invalid database name " ^ dbname ^ ".\n") | |
f6c112c3 | 74 | | _ => badArgs () |