diff options
Diffstat (limited to 'bin/main.ml')
-rw-r--r-- | bin/main.ml | 39 |
1 files changed, 29 insertions, 10 deletions
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) |