diff --git a/.quality.exs b/.quality.exs index c1c03fd..0589e63 100644 --- a/.quality.exs +++ b/.quality.exs @@ -3,8 +3,9 @@ # Two ways to run: # # mix quality - full gate: format, compile, credo, dialyzer, -# deps audit, doc coverage, full test suite -# with coverage. Run before every commit. +# deps audit, doc coverage, docs build, doc +# links, full test suite with coverage. Run +# before every commit. # # mix quality --profile loop - inner loop while implementing: skips dialyzer # and coverage, runs only the tests covering @@ -54,6 +55,21 @@ strict: true ], + # The two docs stages are opt-in in ex_quality, and both are on here so + # that this gate is the pre-publish check for the package's docs, locally + # and in CI. The Docs stage fails on any ExDoc warning. The Doc links stage + # fails on the link rules ExDoc accepts silently: a README relative link to + # a file not in the package files, a published relative link to a file that + # is not an extra, two extras sharing a basename, and a silent rewrite to a + # different extra. Each of those builds cleanly and breaks on HexDocs or + # hex.pm, so only a gate stage catches them before a publish. + docs: [ + enabled: :auto + ], + doc_links: [ + enabled: :auto + ], + profiles: [ loop: [ stages: [:format, :compile, :credo, :test], diff --git a/mix.exs b/mix.exs index baf4ff5..88f1692 100644 --- a/mix.exs +++ b/mix.exs @@ -126,7 +126,7 @@ defmodule StatifierUI.MixProject do {:phoenix_live_view, "~> 1.0", optional: true}, # Dev / test - {:ex_quality, "~> 0.14", only: :dev, runtime: false}, + {:ex_quality, "~> 0.15", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.18", only: :test}, diff --git a/mix.lock b/mix.lock index 948ceac..674e2cb 100644 --- a/mix.lock +++ b/mix.lock @@ -7,7 +7,7 @@ "earmark_parser": {:hex, :earmark_parser, "1.4.46", "67607a0532e810c6f630a515c548d0b24949643f168cc556303bee4cf96105c7", [:mix], [], "hexpm", "9c44636e8a1c68c62f526b2dcd85d941dbbcee7ab82cf64ba06ce28bef8e89f5"}, "erlex": {:hex, :erlex, "0.2.9", "7debbbaa9f4f368b8cd648983e0f1d7963028508e9c59e9d4ed504e94ef52a55", [:mix], [], "hexpm", "8cfffc0ec7159e6d73de2ab28a588064de80f88b2798d5cbe4482cbbc200178b"}, "ex_doc": {:hex, :ex_doc, "0.40.3", "4a972ffe64bc07dc605af487e98fc19b72a4185f55ca031b94c0552d6071c1d9", [:mix], [{:earmark_parser, "~> 1.4.44", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "2756e357742fecd9749b489b85d67c9ce99c465f2e75728d9e6dc8d704b973de"}, - "ex_quality": {:hex, :ex_quality, "0.14.0", "702ed122c85c1d1f1dca2efab60871884e9ba6aefc492f334da51a8175543cc6", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "ac8553e6b7a6a35ada03ef748530db2c5871d69427d74a634fd37afdeabf7e24"}, + "ex_quality": {:hex, :ex_quality, "0.15.0", "e5af847cd6f78c8bde25f8cf8e96c8e3e92ed768affe3711dca05065887771b6", [:mix], [{:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b1d8943973be502fd5c5210f5f96e88b1262ce813b6d50092315a613573deb08"}, "excoveralls": {:hex, :excoveralls, "0.18.5", "e229d0a65982613332ec30f07940038fe451a2e5b29bce2a5022165f0c9b157e", [:mix], [{:castore, "~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "523fe8a15603f86d64852aab2abe8ddbd78e68579c8525ae765facc5eae01562"}, "file_system": {:hex, :file_system, "1.1.1", "31864f4685b0148f25bd3fbef2b1228457c0c89024ad67f7a81a3ffbc0bbad3a", [:mix], [], "hexpm", "7a15ff97dfe526aeefb090a7a9d3d03aa907e100e262a0f8f7746b78f8f87a5d"}, "jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"},