1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
open Import
let command =
let doc = "Clean the project." in
let man =
[ `S "DESCRIPTION"
; `P {|Removes files added by dune such as _build, <package>.install, and .merlin|}
; `Blocks Common.help_secs
]
in
let term =
let+ builder = Common.Builder.term in
(* Disable log file creation. Indeed, we are going to delete the whole build directory
right after and that includes deleting the log file. Not only would creating the
log file be useless but with some FS this also causes [dune clean] to fail (cf
https://github.com/ocaml/dune/issues/2964). *)
let builder = Common.Builder.disable_log_file builder in
let _common, _config = Common.init builder in
Dune_util.Global_lock.lock_exn ~timeout:None;
Dune_engine.Target_promotion.files_in_source_tree_to_delete ()
|> Path.Source.Set.iter ~f:(fun p -> Path.unlink_no_err (Path.source p));
Path.rm_rf Path.build_dir
in
Cmd.v (Cmd.info "clean" ~doc ~man) term
;;
|