let run_coqide log w file =
Format.printf "run_coqide beg@\n@.";
let dir = Wp_parameters.get_output() in
let s = Config.datadir in
let framac_dir = Format.sprintf "%s/wp" s in
let gid = w.po_gid in
let coqide () =
let head = Wpo.file_for_head gid in
let env = file_for_env w.po_env Wpo.Coq in
let model = file_for_model w.po_model Wpo.Coq in
let args =
match Wp_parameters.Script.get() with
| "" ->
[| "-I" ; dir ; "-I" ; framac_dir ; file;head;env;model |]
| f ->
[| "-I" ; dir ; "-I" ; framac_dir ; file;head;env;model;f |]
in
Log.command log "coqide" args ;
Task.command "coqide" args
>>? Log.status log
in
Task.sync coqidelock coqide >>=
fun s ->
if s <> 0 then Task.return Unknown
else
match Proof.parse_coqproof file with
| None ->
Wp_parameters.feedback "No proof found" ;
Task.return Unknown
| Some script ->
Wp_parameters.feedback "Check proof" ;
Coq.coqc true log w (Some script) >>=
Task.call
(fun s ->
Proof.new_script gid [] script ;
if s=0 then Valid else Unknown)