defmodule Mix.Tasks.Doctor.Gen.Config do @moduledoc """ Doctor is a command line utility that can be used to ensure that your project documentation remains healthy. For more in depth documentation on Doctor or to file bug/feature requests, please check out https://github.com/akoutmos/doctor. The `mix doctor.gen.config` command can be used to create a `.doctor.exs` file with the default Doctor settings. The default file contents are: ``` %Doctor.Config{ ignore_modules: [], ignore_paths: [], min_module_doc_coverage: 40, min_module_spec_coverage: 0, min_overall_doc_coverage: 50, min_overall_moduledoc_coverage: 100, min_overall_spec_coverage: 0, exception_moduledoc_required: true, raise: false, reporter: Doctor.Reporters.Full, struct_type_spec_required: true, umbrella: false } ``` """ use Mix.Task alias Mix.Shell.IO alias Doctor.Config @shortdoc "Creates a .doctor.exs config file with defaults" @doc """ This Mix task generates a .doctor.exs configuration file """ @impl true def run(_args) do create_file = if File.exists?(Config.config_file()) do IO.yes?("An existing Doctor config file already exists. Overwrite?") else true end if create_file do create_config_file() IO.info("Successfully created .doctor.exs file.") else IO.info("Did not create .doctor.exs file.") end end defp create_config_file do File.cwd!() |> Path.join(Config.config_file()) |> File.write(Config.config_defaults_as_string()) end end