SERIAL
[sqlgg.git] / sqlgg.ml
blob2755fa9b87813bdd7ebb256c21cf9bd44e95964f
1 (** command-line *)
3 open Printf
4 open Operators
6 module Cxx = Gen.Make(Gen_cxx)
7 module Caml = Gen.Make(Gen_caml)
8 module Xml_gen = Gen.Make(Gen_xml)
10 let generate = ref Cxx.process
12 let set_out s =
13 generate :=
14 match s with
15 | "cxx" -> Cxx.process
16 | "caml" -> Caml.process
17 | "xml" -> Xml_gen.process
18 | _ -> failwith (sprintf "Unknown output language: %s" s)
20 let work =
21 let f s = s >> Main.parse_sql >> !generate in
22 function
23 | "-" -> f (Std.input_all stdin)
24 | filename -> Main.with_file filename f
26 let usage_msg =
27 let s1 = sprintf "SQL Guided (code) Generator ver. %s\n" Config.version in
28 let s2 = sprintf "Usage: %s <options> <file.sql>\n" (Filename.basename Sys.executable_name) in
29 let s3 = "Options are:" in
30 s1 ^ s2 ^ s3
32 let show_version () = print_endline Config.version
34 let main () =
35 let args =
37 "-version", Arg.Unit show_version, " Show version";
38 "-gen", Arg.String set_out, "cxx|caml|xml Set output language";
39 "-test", Arg.Unit Test.run, " Run unit tests";
40 "-", Arg.Unit (fun () -> work "-"), " Read sql from stdin";
43 Arg.parse (Arg.align args) work usage_msg
45 let _ = Printexc.print main ()