let remove_directory ~recursive dir =
  let fail msg = failwith ("Filew.remove_directory: " ^ msg)
  in
    if not (is_directory dir)
    then fail "not found or not a directory"
    else
      (if recursive then remove_directory_contents_rec dir else ();
       Unix.rmdir dir)