diff --git a/lib/mix/tasks/docs.ex b/lib/mix/tasks/docs.ex index 31b9e6344..f36dcab7c 100644 --- a/lib/mix/tasks/docs.ex +++ b/lib/mix/tasks/docs.ex @@ -127,7 +127,8 @@ defmodule Mix.Tasks.Docs do config |> get_docs_opts() |> Keyword.merge(cli_opts) - |> normalize_source_url(config) + |> normalize_source_url(config) # accepted at root level config + |> normalize_homepage_url(config) # accepted at root level config |> normalize_source_beam(config) |> normalize_main() |> normalize_deps() @@ -168,6 +169,14 @@ defmodule Mix.Tasks.Docs do end end + defp normalize_homepage_url(options, config) do + if homepage_url = config[:homepage_url] do + Keyword.put(options, :homepage_url, homepage_url) + else + options + end + end + defp normalize_source_beam(options, config) do compile_path = if Mix.Project.umbrella?(config) do diff --git a/test/mix/tasks/docs_test.exs b/test/mix/tasks/docs_test.exs index a0fdaaeac..ebcd42819 100644 --- a/test/mix/tasks/docs_test.exs +++ b/test/mix/tasks/docs_test.exs @@ -70,10 +70,22 @@ defmodule Mix.Tasks.DocsTest do run([], [app: :ex_doc, docs: fn -> [main: "another"] end]) end - test "accepts source_url from root" do - assert [{"ex_doc", "dev", [formatter: "html", deps: _, source_beam: _, - source_url: "http://github.com/elixir-lang/ex_doc"]}] = - run([], [app: :ex_doc, source_url: "http://github.com/elixir-lang/ex_doc"]) + test "accepts options from root" do + # accepted options are: `app`, `name`, `source_url`, `homepage_url`, `version` + assert [{"ExDoc", "1.2.3-dev", + [formatter: "html", + deps: _, source_beam: _, + homepage_url: "http://elixir-lang.org", + source_url: "https://github.com/elixir-lang/ex_doc", + ]}] = + run([], [app: :ex_doc, + name: "ExDoc", + source_url: "https://github.com/elixir-lang/ex_doc", + homepage_url: "http://elixir-lang.org", + version: "1.2.3-dev", + ]) + + assert [{"ex_doc", "dev", _}] = run([], [app: :ex_doc]) end test "supports umbrella project" do