add command line arguments parser
This commit is contained in:
parent
33171d2bd2
commit
d56e771887
1 changed files with 39 additions and 2 deletions
41
elements.ml
41
elements.ml
|
@ -1,2 +1,39 @@
|
||||||
let () = Makedb.makedb (Sqlite3.db_open "elements.sqlite3")
|
module Opts = struct
|
||||||
(Yojson.Basic.from_channel stdin)
|
open Arg
|
||||||
|
|
||||||
|
type lasttype = NAME | SYMB
|
||||||
|
|
||||||
|
let ltype = ref NAME
|
||||||
|
let gendb = ref ""
|
||||||
|
let maxmatch = ref 3
|
||||||
|
let match_name : string list ref = ref []
|
||||||
|
let match_symb : string list ref = ref []
|
||||||
|
let dbfile = ref "elements.sqlite3"
|
||||||
|
|
||||||
|
let add_name s =
|
||||||
|
match_name := s::!match_name;
|
||||||
|
ltype := NAME
|
||||||
|
let add_symb s =
|
||||||
|
match_symb := s::!match_symb;
|
||||||
|
ltype := SYMB
|
||||||
|
let add_def s = match !ltype with
|
||||||
|
| NAME -> add_name s
|
||||||
|
| SYMB -> add_symb s
|
||||||
|
|
||||||
|
let msg = "Periodic table search\n\
|
||||||
|
elements -gendb file [-dbfile outfile]\n\
|
||||||
|
elements [-maxmatch n] [-dbfile search] [-name ...] [-symb ...]\n\
|
||||||
|
"
|
||||||
|
|
||||||
|
let spec = [
|
||||||
|
"-gendb", Set_string gendb, "Generate DB file";
|
||||||
|
"-maxmatch", Set_int maxmatch, "Limit the amount of matches (def. 3)";
|
||||||
|
"-dbfile", Set_string dbfile, "Set the DB filename";
|
||||||
|
"-name", String add_name, "Search by name (default)";
|
||||||
|
"-symb", String add_symb, "Search by symbol"
|
||||||
|
]
|
||||||
|
|
||||||
|
let exec() = parse spec add_def msg
|
||||||
|
end
|
||||||
|
|
||||||
|
let () = Opts.exec()
|
||||||
|
|
Loading…
Reference in a new issue