From cb124a87d8ed1a309b00c9163cde2911ee029251 Mon Sep 17 00:00:00 2001 From: Marc Coquand Date: Tue, 26 Dec 2023 09:02:53 -0600 Subject: Add cmdliner --- bin/dune | 1 + bin/main.ml | 39 +++++++++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 10 deletions(-) (limited to 'bin') diff --git a/bin/dune b/bin/dune index ce5ed03..4a29c86 100644 --- a/bin/dune +++ b/bin/dune @@ -2,5 +2,6 @@ (public_name fixgen) (name main) (libraries + cmdliner fixgen) ) diff --git a/bin/main.ml b/bin/main.ml index 6942382..c964c5e 100644 --- a/bin/main.ml +++ b/bin/main.ml @@ -1,4 +1,5 @@ open Fixgen +open Cmdliner let parse (s : string) = let lexbuf = Lexing.from_string s in @@ -6,13 +7,31 @@ let parse (s : string) = ast -let () = - let result = parse "user: id uuidv4, uh uuidv4\npurchases: id uuidv4, pid user.id" in - match result with - | Some ast -> - Ast_types.compile ast ~amount:4 - |> List.iter (fun (name, file) -> - let result = Fixture.csv_of_generated_fixtures file in - print_endline ("FILE NAME: " ^ name); - print_endline result) - | None -> print_endline "error" +let fixgen content output_type () = + let result = parse content in + if output_type != "csv" + then print_endline "Only csv output is supported" + else ( + match result with + | Some ast -> + Ast_types.compile ast ~amount:4 + |> List.iter (fun (name, file) -> + let result = Fixture.csv_of_generated_fixtures file in + print_endline ("FILE NAME: " ^ name); + print_endline result) + | None -> print_endline "error") + + +let file = + let doc = "Fixgen content" in + Arg.(required & pos 0 (some string) None & info [] ~docv:"PROGRAM" ~doc) + + +let output_type = + let doc = "Set output file type, supported=csv" in + Arg.(value & opt string "csv" & info [ "f"; "file-type" ] ~docv:"FILE TYPE" ~doc) + + +let fixgen_t = Term.(const fixgen $ file $ output_type $ const ()) +let cmd = Cmd.v (Cmd.info "fixgen") fixgen_t +let () = exit (Cmd.eval cmd) -- cgit v1.2.3