So your implementation function that you seek to invoke on the cli may be something like
let my_program file cmd = match cmd with
| "thecmd" -> ...
| ...
A simple start would be
let file_t = ...
let cmd_t = Arg.(required & pos 1 (some string) None & info [] ~docv:"CMD")
let my_program_t = Term.(const my_program $ file_t $ cmd_t)
let () = Term.exit @@ Term.eval (my_program_t, Term.info "my_program")