Skip to content
Snippets Groups Projects
rdbgui.ml 1.31 KiB

let quote str = if String.contains str ' ' then ("\""^str^"\"") else str

let rdbg_cmd =
  let cmd = List.tl (List.map quote (Array.to_list Sys.argv)) in
  let str = String.concat " " cmd in
  let salut_mode = not (Str.string_match (Str.regexp ".*sasa .*\\.dot") str 0) in
  let str = if salut_mode then str else
              Str.replace_first (Str.regexp "sasa ") "sasa -custd -replay " str
      (* I add -custd here, but it ought to be overridden by user option.
         The idea is that I don't want the default daemon to be -dd from the gui
         (as it is the case from the cli)
      *)
  in
  let sasa_opt = if salut_mode then "--salut" else "--sasa" in
  String.concat " " ("rdbg"::sasa_opt::str::[])

let gui =
  Printf.sprintf " --ocaml-cmd \"#use \\\"gtkgui.ml\\\";;\""


let welcome () =
  Printf.printf "rdbgui4sasa is a GUI wrapper around rdbg when used with sasa\n";
  Printf.printf "you can thus replace rdbg by rdbgui4sasa, but sasa *must be* ";
  Printf.printf "involved in the session\nExample: \n";
  Printf.printf "   rdbgui4sasa -sut \"sasa g.dot\"\n";
  Printf.printf "   rdbgui4sasa -h\n\n";
  flush stdout

let _ =
  let n = Array.length Sys.argv in
  welcome ();
  if n = 1 && Mypervasives.ls ".rdbg-session" "ml" = [] then exit 0;
  let cmd = rdbg_cmd ^ gui in
  Printf.printf "%s\n%!" cmd;
  Sys.command cmd